二叉树层序遍历非递归
时间: 2024-11-15 12:28:53 浏览: 26
二叉树的层序遍历(非递归)通常使用队列数据结构来实现。步骤如下:
1. 创建一个空的队列,并将根节点入队。
2. 当队列不为空时,循环执行以下操作:
a. 弹出队首元素,访问该节点(通常是当前层的最后一个节点)。
b. 如果节点有左子节点,将其入队。
c. 如果节点有右子节点,也将其入队。
3. 每次从队列中取出节点并访问,然后检查它的左右子节点,直到队列为空。
这种方法避免了递归带来的函数调用栈开销,适用于大规模的树结构。以下是Python的示例代码:
```python
from collections import deque
def levelOrder(root):
if root is None:
return []
queue = deque([root]) # 初始化队列
result = [] # 存储结果
while queue:
level_size = len(queue) # 当前层节点数
current_level = [node.val for node in queue] # 记录当前层的值
result.append(current_level) # 将当前层添加到结果
for _ in range(level_size): # 遍历完当前层
node = queue.popleft() # 出队
if node.left: # 如果有左孩子
queue.append(node.left)
if node.right: # 如果有右孩子
queue.append(node.right)
return result
```
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)