前序二叉树数组转中序二叉树
时间: 2024-05-10 15:12:47 浏览: 87
前序遍历的顺序是:根节点 -> 左子树 -> 右子树,而中序遍历的顺序是:左子树 -> 根节点 -> 右子树。因此,我们可以通过前序遍历数组和中序遍历数组来构建一棵二叉树。
具体实现方法如下:
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, inorder):
if not preorder or not inorder:
return None
root_val = preorder
root_index = inorder.index(root_val)
root = TreeNode(root_val)
root.left = buildTree(preorder[1:root_index+1], inorder[:root_index])
root.right = buildTree(preorder[root_index+1:], inorder[root_index+1:])
return root
```
阅读全文