写一个二叉树平衡遍历
时间: 2024-09-21 16:03:22 浏览: 31
在二叉树中,平衡遍历是一种特殊的遍历方式,也称为AVL树的层次遍历或自底向上的层序遍历。因为AVL树是一种自我平衡的二叉搜索树,它的高度差总是保持在一个较小的范围内,所以我们可以同时对每一层进行操作。
以下是一个简单的Python实现,使用了`queue`模块来进行广度优先遍历:
```python
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def balance_bfs(root):
if not root:
return []
queue = deque([root])
levels = []
while queue:
level_size = len(queue)
current_level = [node.val for node in queue.popleft(0) if node]
levels.append(current_level)
# 添加下一层节点到队列
for _ in range(level_size):
if queue[0]:
queue.append(queue[0].left)
queue.append(queue[0].right)
queue.popleft()
return levels
```
这个函数首先将根节点加入队列,然后进入循环,直到队列为空。在每次迭代中,它会获取当前层的所有节点值,添加到结果列表中,接着将下一层的节点依次加入队列。这样,每层的节点都被顺序添加到了`levels`列表中,保证了平衡。
阅读全文