📅  最后修改于: 2023-12-03 14:53:35.015000             🧑  作者: Mango
完全二叉树是二叉树中的一种特殊结构。它除了最后一层外,每一层都被填满,并且最后一层的节点都靠左对齐(即如果最后一层节点数不到满层节点数的一半,那么它们全部在最左边连续排列)。
下面是一个例子:
1
/ \
2 3
/ \ /
4 5 6
从这个例子可以看到,这棵树的最后一层节点不到满层节点数的一半,因此其全部在最左边连续排列。
横向遍历是指从左到右,按层级遍历完全二叉树上的所有节点,并按顺序输出节点的值。在上面的例子中,横向遍历的结果是:1 2 3 4 5 6。
横向遍历可以借助队列来实现,具体实现思路如下:
根节点入队列
队列不为空,取出队头节点,打印节点的值
如果节点有左子节点,将其入队列
如果节点有右子节点,将其入队列
重复执行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实现的完整代码: