二叉树层次遍历的非递归算法并输出节点所在层次
时间: 2025-01-04 07:41:32 浏览: 3
二叉树的层次遍历,也称为广度优先搜索(BFS),非递归实现通常采用队列数据结构。以下是Python的一个简单示例:
```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 levelOrder(root):
if root is None:
return []
result = []
queue = deque([root])
while queue:
level_size = len(queue)
current_level = [node.val for node in iter(queue.popleft, None) if node]
result.append(current_level)
# 添加下一层到队列中
for _ in range(level_size):
if queue[0].left:
queue.append(queue[0].left)
if queue[0].right:
queue.append(queue[0].right)
return result
# 示例
# 定义一棵二叉树...
# 使用levelOrder函数获取每个层次的节点值
tree_levels = levelOrder(your_tree_root)
```
这个函数首先检查根节点是否存在,然后初始化一个队列并将根节点放入。在循环中,它记录当前层的节点,将其添加到结果列表中,接着将下一层的所有节点(左孩子和右孩子)依次加入队列。当队列为空时,说明已经遍历完所有层次。
阅读全文