由前序遍历序列和中序遍历序列构造二叉树
时间: 2023-06-18 13:07:52 浏览: 191
唯一地确定一棵二叉树
构造二叉树的过程可以通过递归实现。具体步骤如下:
1. 在前序遍历序列中找到当前树的根节点,并创建一个新节点。
2. 在中序遍历序列中找到当前根节点的位置,该位置左边的所有节点都是当前根节点的左子树,该位置右边的所有节点都是当前根节点的右子树。
3. 根据中序遍历序列中当前根节点位置的左右子树的节点数量,可以计算出前序遍历序列中当前根节点的左右子树的范围。
4. 递归构造左子树和右子树。
下面是一个具体的实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def buildTree(preorder: List[int], inorder: List[int]) -> TreeNode:
if not preorder or not inorder:
return None
# 在前序遍历序列中找到根节点,并创建新节点
root = TreeNode(preorder[0])
# 在中序遍历序列中找到根节点位置
root_idx = inorder.index(preorder[0])
# 递归构造左子树和右子树
root.left = buildTree(preorder[1:root_idx+1], inorder[:root_idx])
root.right = buildTree(preorder[root_idx+1:], inorder[root_idx+1:])
return root
```
其中,`preorder` 表示前序遍历序列,`inorder` 表示中序遍历序列,返回值为构造好的二叉树的根节点。
阅读全文