已知一个二叉树的结构用分治法实现树的先序中序后序
时间: 2023-06-24 14:07:03 浏览: 96
分治法是一种递归的思想,可以用来解决二叉树的遍历问题。对于二叉树的先序、中序和后序遍历,我们可以分别考虑左子树和右子树的遍历顺序,然后将结果合并起来。
以下是分治法实现树的先序、中序和后序遍历的代码:
```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]:
if not root:
return []
res = [root.val]
res += preorderTraversal(root.left)
res += preorderTraversal(root.right)
return res
# 分治法实现树的中序遍历
def inorderTraversal(root: TreeNode) -> List[int]:
if not root:
return []
res = inorderTraversal(root.left)
res += [root.val]
res += inorderTraversal(root.right)
return res
# 分治法实现树的后序遍历
def postorderTraversal(root: TreeNode) -> List[int]:
if not root:
return []
res = postorderTraversal(root.left)
res += postorderTraversal(root.right)
res += [root.val]
return res
```
以上代码中,先序遍历的顺序是根节点、左子树、右子树;中序遍历的顺序是左子树、根节点、右子树;后序遍历的顺序是左子树、右子树、根节点。因此,在递归的过程中,我们分别先遍历左子树和右子树,然后将结果合并起来,最后再加上根节点。
阅读全文