python二叉树的先序遍历、中序遍历、后序遍历、层次遍历
时间: 2023-09-16 14:15:03 浏览: 106
二叉树的遍历方式有四种,分别是先序遍历、中序遍历、后序遍历和层次遍历。
先序遍历:从根节点开始,先访问根节点,再访问左子树,最后访问右子树。
中序遍历:从根节点开始,先访问左子树,再访问根节点,最后访问右子树。
后序遍历:从根节点开始,先访问左子树,再访问右子树,最后访问根节点。
层次遍历:从根节点开始,按照树的层次依次遍历每个节点。
以下是Python实现二叉树的遍历的代码示例:
```python
# 定义二叉树节点
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 先序遍历
def preorderTraversal(root: TreeNode) -> List[int]:
res = []
def dfs(node):
if not node:
return
res.append(node.val)
dfs(node.left)
dfs(node.right)
dfs(root)
return res
# 中序遍历
def inorderTraversal(root: TreeNode) -> List[int]:
res = []
def dfs(node):
if not node:
return
dfs(node.left)
res.append(node.val)
dfs(node.right)
dfs(root)
return res
# 后序遍历
def postorderTraversal(root: TreeNode) -> List[int]:
res = []
def dfs(node):
if not node:
return
dfs(node.left)
dfs(node.right)
res.append(node.val)
dfs(root)
return res
# 层次遍历
def levelOrder(root: TreeNode) -> List[List[int]]:
res = []
if not root:
return res
queue = [root]
while queue:
level = []
for i in range(len(queue)):
node = queue.pop(0)
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(level)
return res
```
阅读全文