python怎么遍历二叉树
时间: 2024-10-12 20:13:46 浏览: 23
在Python中,遍历二叉树通常有两种主要方式:前序遍历(Preorder)、中序遍历(Inorder)和后序遍历(Postorder),以及层序遍历(Level Order)。这里以递归的方式简单介绍这几种方法:
1. **前序遍历**(Preorder Traversal):先访问根节点,然后递归地访问左子树,最后访问右子树。
```python
def preorder_traversal(root):
if root is not None:
print(root.val) # 访问当前节点
preorder_traversal(root.left) # 遍历左子树
preorder_traversal(root.right) # 遍历右子树
```
2. **中序遍历**(Inorder Traversal):先递归地访问左子树,然后访问根节点,最后访问右子树。
```python
def inorder_traversal(root):
if root is not None:
inorder_traversal(root.left)
print(root.val) # 访问当前节点
inorder_traversal(root.right)
```
3. **后序遍历**(Postorder Traversal):先递归地访问左子树和右子树,最后访问根节点。
```python
def postorder_traversal(root):
if root is not None:
postorder_traversal(root.left)
postorder_traversal(root.right)
print(root.val)
```
4. **层序遍历**(Level Order Traversal,也叫广度优先搜索,BFS):从上到下、从左到右逐层访问节点。
```python
from collections import deque
def level_order_traversal(root):
if root is None:
return []
queue = deque([root])
result = []
while queue:
node = queue.popleft()
result.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return result
```
阅读全文