python 层序遍历
时间: 2023-11-17 17:00:38 浏览: 90
Python中二叉树的层序遍历可以使用队列实现,具体实现方法如下所示:
```python
from queue import Queue
def level_order_traversal(node):
queue = Queue()
queue.put(node)
while not queue.empty():
"""出队并打印"""
node = queue.get()
print(node.data)
"""左右子节点入队"""
if node.left is not None:
queue.put(node.left)
if node.right is not None:
queue.put(node.right)
```
其中,`Queue()`是Python内置的队列数据结构,`put()`方法用于将元素入队,`get()`方法用于将元素出队。在层序遍历中,我们首先将根节点入队,然后依次出队并打印节点的值,同时将其左右子节点入队,直到队列为空。
相关问题
python层序遍历二叉树
在Python中,层序遍历(也称为广度优先遍历)二叉树是一种按层次顺序访问节点的方法,从根节点开始,逐层向下遍历。这种遍历方式通常使用队列来辅助实现,因为队列的特点是先进先出(FIFO),非常适合用来处理需要按照顺序访问同一层级节点的情况。
以下是层序遍历二叉树的基本步骤:
1. 如果二叉树为空,则直接结束遍历。
2. 创建一个空的队列,并将根节点(如果存在)入队。
3. 当队列不为空时,执行以下操作:
a. 弹出队首元素(当前层的第一个节点)并访问它。
b. 将该节点的左右子节点(如果存在)分别入队,以便后续访问。
4. 重复步骤3,直到队列为空。
以下是一个简单的Python代码实现:
```python
from collections import deque
class Node:
def __init__(self, value, left=None, right=None):
self.value = value
self.left = left
self.right = right
def level_order_traversal(root):
if root is None:
return []
queue = deque([root]) # 使用双端队列存储节点
result = []
while queue:
level_nodes = [] # 用于存放当前层的节点值
size = len(queue)
for _ in range(size):
node = queue.popleft() # 弹出队首节点
level_nodes.append(node.value)
if node.left: # 如果有左子节点,入队
queue.append(node.left)
if node.right: # 如果有右子节点,入队
queue.append(node.right)
result.append(level_nodes) # 将当前层节点值添加到结果列表
return result
# 示例
# 假设我们有如下二叉树
# 1
# / \
# 2 3
# / \ \
# 4 5 6
root = Node(1, Node(2, Node(4), Node(5)), Node(3, Node(6)))
print(level_order_traversal(root)) # 输出: [, [2, 3], [4, 5, 6]]
```
python二叉树层序遍历
二叉树的层序遍历可以通过不同的方法实现。其中一种方法是使用队列的思想。每次循环遍历一层的节点,将其子节点加入队列,并将遍历的值加入结果中。以下是一个用Python实现的例子:
```python
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [二叉树的层序遍历(Python语言)](https://blog.csdn.net/attitude36/article/details/110144216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [python数据结构之树(2)—— 二叉树遍历|CSDN创作打卡](https://blog.csdn.net/weixin_55073640/article/details/122758286)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [二叉树的层序遍历Python解法](https://blog.csdn.net/qq_43593534/article/details/123800081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文