python 二叉树层次遍历
时间: 2023-10-25 15:30:35 浏览: 90
二叉树的层次遍历
二叉树的层次遍历可以使用广度优先搜索(BFS)的方式来实现。以下是一个示例的 Python 代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def levelOrder(root):
if not root:
return []
result = []
queue = [root]
while queue:
level_size = len(queue)
level_values = []
for _ in range(level_size):
current_node = queue.pop(0)
level_values.append(current_node.val)
if current_node.left:
queue.append(current_node.left)
if current_node.right:
queue.append(current_node.right)
result.append(level_values)
return result
```
你可以创建一个 `TreeNode` 类来表示二叉树的节点,其中 `val` 是节点的值,`left` 和 `right` 分别表示左子节点和右子节点。然后,定义 `levelOrder` 函数来进行层次遍历。
在 `levelOrder` 函数中,我们首先判断根节点是否为空。如果为空,则直接返回空列表。接下来,我们使用一个队列 `queue` 来存储待遍历的节点。将根节点加入队列后,我们进入循环。在每一层的循环中,我们首先获取当前层的节点数量 `level_size`,然后创建一个空列表 `level_values` 来存储当前层的节点值。
接下来,我们通过循环从队列中取出 `level_size` 个节点,并将其值加入到 `level_values` 列表中。同时,如果当前节点的左子节点和右子节点存在,则将它们加入到队列中。完成当前层的遍历后,将 `level_values` 加入到结果列表 `result` 中。
最后,当队列为空时,表示遍历完成,我们返回结果列表 `result`。
这样,调用 `levelOrder` 函数并传入二叉树的根节点,即可得到二叉树的层次遍历结果。
阅读全文