📜  完全二叉树的横向遍历(1)

📅  最后修改于: 2023-12-03 14:53:35.015000             🧑  作者: Mango

完全二叉树的横向遍历

什么是完全二叉树?

完全二叉树是二叉树中的一种特殊结构。它除了最后一层外,每一层都被填满,并且最后一层的节点都靠左对齐(即如果最后一层节点数不到满层节点数的一半,那么它们全部在最左边连续排列)。

下面是一个例子:

        1
      /   \
     2     3
    / \   /
   4   5 6

从这个例子可以看到,这棵树的最后一层节点不到满层节点数的一半,因此其全部在最左边连续排列。

横向遍历

横向遍历是指从左到右,按层级遍历完全二叉树上的所有节点,并按顺序输出节点的值。在上面的例子中,横向遍历的结果是:1 2 3 4 5 6。

实现思路

横向遍历可以借助队列来实现,具体实现思路如下:

  1. 根节点入队列

  2. 队列不为空,取出队头节点,打印节点的值

  3. 如果节点有左子节点,将其入队列

  4. 如果节点有右子节点,将其入队列

  5. 重复执行2-4,直到队列为空

下面是使用Python语言实现的代码片段:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def traverse(root: TreeNode):
    if not root:
        return []

    queue = [root]  # 根节点入队列
    res = []  # 存储结果的列表

    while queue:
        node = queue.pop(0)  # 取出队头节点
        res.append(node.val)  # 打印节点的值

        if node.left:  # 左子节点入队列
            queue.append(node.left)

        if node.right:  # 右子节点入队列
            queue.append(node.right)

    return res
总结

完全二叉树的横向遍历可以借助队列实现,具体实现思路为将根节点入队列,然后每次从队列中取出一个节点,并将其左右子节点入队列,依此类推,直到队列为空。下面是使用Python实现的完整代码: