AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 24-25-2纲要复习题-学生版 题目详情
CB41E99D992000019657C24AAA214200
24-25-2纲要复习题-学生版
302
简答题

在一棵空的二叉搜索树中,按照顺序依次插入关键字序列:{12、7、17、11、16、2、13、9、21、4},然后请画出最终得到的二叉搜索树。

答案解析

正确答案:图的广度优先遍历(BFS)from collections import dequedef bfs(graph, start):"""图的广度优先遍历(BFS):param graph: 图的邻接表表示:param start: 起始节点:return: 遍历结果的列表"""if start not in graph:return []visited = set([start])queue = deque([start])result = []while queue:node = queue.popleft()result.append(node)for neighbor in graph[node]:if neighbor not in visited:visited.add(neighbor)queue.append(neighbor)return result二叉树非递归后序遍历def PostOrderNonRecursive(self, Root):# 初始化栈,用于存储节点和访问状态StackTreeNode = []# 当前处理的节点指针,初始指向根节点tBinaryTreeNode = Root# 用于存储节点状态的对象tTree = None# 第一阶段:沿左子树深入,将所有左子节点入栈while tBinaryTreeNode is not None:# 创建节点状态对象(0表示未处理右子树)tTree = TreeState(tBinaryTreeNode, 0)StackTreeNode.append(tTree)# 继续向左子树深入tBinaryTreeNode = tBinaryTreeNode.LeftChild# 第二阶段:处理栈中的节点while len(StackTreeNode) > 0:# 弹出栈顶元素tTree = StackTreeNode.pop()# 情况1:当前节点没有右子树 或 右子树已处理过if tTree.BinaryTreeNode.RightChild is None or tTree.VisitedFlag == 1:# 访问该节点(满足后序遍历条件)self.VisitBinaryTreeNode(tTree.BinaryTreeNode)# 情况2:当前节点的右子树尚未处理else:# 将节点重新压回栈中(等待后续处理)StackTreeNode.append(tTree)# 标记该节点的右子树即将被处理tTree.VisitedFlag = 1# 转向处理右子树tBinaryTreeNode = tTree.BinaryTreeNode.RightChild# 对右子树进行同样的左子树深入过程while tBinaryTreeNode is not None:tTree = TreeState(tBinaryTreeNode, 0)StackTreeNode.append(tTree)tBinaryTreeNode = tBinaryTreeNode.LeftChild二叉树非递归先序遍历class TreeNode:def ⱣⱤⱣⱤinitⱣⱤⱣⱤ(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightdef preorderTraversal(root):"""二叉树非递归先序遍历:param root: 二叉树根节点:return: 遍历结果的列表"""if not root:return []stack = [root] # 使用栈辅助遍历result = []while stack:node = stack.pop() # 弹出栈顶节点result.append(node.val) # 访问当前节点# 先压入右子节点,再压入左子节点# 这样出栈时会先访问左子节点if node.right:stack.append(node.right)if node.left:stack.append(node.left)return result二叉树非递归中序遍历class TreeNode:def ⱣⱤⱣⱤinitⱣⱤⱣⱤ(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightdef inorderTraversal(root):"""二叉树非递归中序遍历:param root: 二叉树根节点:return: 遍历结果的列表"""stack = []result = []current = rootwhile current or stack:# 遍历到最左边的节点,沿途节点入栈while current:stack.append(current)current = current.left# 弹出栈顶节点并访问current = stack.pop()result.append(current.val)# 转向右子树current = current.rightreturn result

相关知识点:

二叉搜索树插入结果

题目纠错
24-25-2纲要复习题-学生版

扫码进入小程序
随时随地练习

相关题目

单选题

1912年3月中华民国临时参议院颁布的《中华民国临时约法》是中国历史上第一部具有资产阶级共和国宪法性质的法典。毛泽东曾称赞它“带有革命性、民主性”,其“革命性、民主性”主要体现在( )。

单选题

资产阶级革命派的骨干力量是( )。

单选题

近代以来中华民族面临争取民族独立、人民解放和实现国家富强、人民幸福的两大历史任务。两个任务既相互区别又紧密联系。两大历史任务的联系在于( )。

单选题

下列国民党右派制造的反革命活动(事变),其先后顺序是( )。①“七•一五”反革命政变②“四•一二”反革命政变③中山舰事件④西山会议

单选题

太平天国在《天朝田亩制度》中提出的社会改革方案的中心是( )。

单选题

中国革命的发生和胜利不是偶然的,而是有着深刻的社会根源和雄厚的群众基础。由于帝国主义、封建主义、官僚资本主义的残酷压迫,中国人民走上了反帝、反封建、反官僚资本主义斗争的伟大道路。在中国革命过程中,曾经被人称作“开万国未有之奇”的一种现象是( )。

单选题

通过《关于若干历史问题的决议》的会议是( )。

单选题

1954年9月15日,第一届全国人民代表大会第一次会议顺利开幕。9月28日,会议在完成预定的议程后胜利闭幕。这次会议是我国人民民主建设的重要里程碑,标志着新中国( )。

单选题

戊戌维新运动兴起的社会物质条件是( )。

单选题

中华人民共和国在联合国合法席位的恢复是在( )。

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码