定义二叉树结点,构建三层二叉树,层序输出(python)

二叉树结点定义

class bi_tree:
    def __init__(self, v):
        self.value = v
        self.lsub = None
        self.rsub = None  

构建三层二叉树,形如
在这里插入图片描述

root_tree = bi_tree(3)

left_tree = bi_tree(2)
right_tree = bi_tree(4)
root_tree.lsub = left_tree
root_tree.rsub = right_tree

left_l_tree = bi_tree(0)
left_r_tree = bi_tree(1)
left_tree.lsub = left_l_tree
left_tree.rsub = left_r_tree

right_l_tree = bi_tree(5)
right_r_tree = bi_tree(6)
right_tree.lsub = right_l_tree
right_tree.rsub = right_r_tree

定义层序输出二叉树函数

def print_bi_tree(p_bi_tree):
    tree_list = []
    tree_list.append(p_bi_tree)
    while len(tree_list) > 0:
        p = tree_list.pop(0)
        print(p.value)
        if p.lsub is not None:
            tree_list.append(p.lsub)
        if p.rsub is not None:
            tree_list.append(p.rsub)

层序输出二叉树[3, 2, 4, 0, 1, 5, 6]

print_bi_tree(root_tree)

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是用 Python 实现按照二叉树 t 中的层序遍历顺序输出节点的代码: ```python class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def level_order_traversal(root): if not root: return [] queue = [root] result = [] while queue: level = [] size = len(queue) for i in range(size): node = queue.pop(0) level.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) result.append(level) return result t = TreeNode(1, TreeNode(2, TreeNode(4), TreeNode(5)), TreeNode(3, TreeNode(6), TreeNode(7))) result = level_order_traversal(t) for level in result: for val in level: print(val, end=' ') ``` 输出结果为:2 3 4 5 6 7 这里我们定义了一个 `TreeNode` 类表示二叉树的节点,每个节点有一个 `val` 属性表示节点的值,以及 `left` 和 `right` 属性分别表示左右子节点。 然后我们定义了一个 `level_order_traversal` 函数,该函数实现了按照二叉树层序遍历顺序输出节点的功能。具体实现方式是使用一个队列 `queue` 来存储每一层的节点,初始化时将根节点加入队列中,然后循环遍历队列,每次取出队首节点并将其值加入到当前层的列表 `level` 中,然后将其左右子节点加入队列中,最后将 `level` 列表加入到结果列表 `result` 中。最终返回 `result` 即可得到按照层序遍历顺序输出的节点列表。 在主函数中,我们创建了一个二叉树 `t`,然后调用 `level_order_traversal` 函数得到结果列表 `result`,最后遍历输出结果列表中的每个元素即可。 ### 回答2: 这段代码的功能是将二叉树t中的结点按照层序遍历的顺序输出层序遍历是指从根结点开始,按照从上到下、从左到右的顺序遍历每一个结点。这种遍历方式可以使用队列来实现。 我们可以使用一个队列来存储结点,先将根结点入队,然后从队列中取出一个结点,先输出它的值,然后将它的左右子结点入队。这样就保证了层序遍历的顺序。接下来循环执行这个过程,直到队列为空。 具体实现中,需要定义一个辅助函数printNode来输出结点的值。然后在主函数中,先判断根结点是否为空,如果不为空就将它入队。然后循环执行以下操作,直到队列为空:取出队首结点输出它的值,将它的左右子结点加入队列。这个过程可以使用while循环实现。 下面是这段代码的具体实现: ```python class Node: def __init__(self, val): self.val = val self.left = None self.right = None def printNode(node): if node: print(node.val) def levelOrderTraversal(t): if not t: return queue = [] queue.append(t) while queue: node = queue.pop(0) printNode(node) if node.left: queue.append(node.left) if node.right: queue.append(node.right) # 测试代码 root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) root.right.left = Node(6) root.right.right = Node(7) levelOrderTraversal(root) ``` 以上就是这段代码的功能和实现方式了。 ### 回答3: 这段代码的功能是按照二叉树层序遍历顺序将二叉树t中的结点输出层序遍历是一种二叉树的遍历方法,它沿着的层级依次遍历每一个结点,先访问根节点,然后从左到右依次访问它的子节点,再按照从左到右的顺序依次访问每个子节点的子节点,直到遍历完所有的结点。 下面是代码的解析: 首先定义了一个队列queue来存储遍历过程中的结点,将根节点入队。然后进行while循环,当队列不为空时,从队列中取出头结点,将结点的值打印出来,并分别将左右子节点入队,按照队列的先进先出的原则遍历下一层结点,直到所有结点都遍历完毕。 需要注意的是,在遍历子节点时需要先判断左右子节点是否为空,因为空节点不能入队,否则会导致队列遍历错误。 总之,这段代码实现了一种基于队列的二叉树层序遍历方法,其时间复杂度为O(n),n为二叉树中的结点数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值