根据前序遍历和中序遍历创建二叉树的代码
时间: 2023-07-24 09:08:19 浏览: 30
假设给定的前序遍历数组为preorder[],大小为n;中序遍历数组为inorder[],大小为n。以下是创建二叉树的代码实现:
```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 = TreeNode(preorder[0])
idx = inorder.index(root.val)
root.left = buildTree(preorder[1:idx+1], inorder[:idx])
root.right = buildTree(preorder[idx+1:], inorder[idx+1:])
return root
```
该函数的主要思路是:先根据前序遍历的第一个节点创建根节点,然后在中序遍历中找到根节点的位置,根据这个位置将中序遍历分成左子树和右子树两部分,递归处理左子树和右子树,分别构造左子树和右子树,并将它们连接到根节点上。
使用示例:
```python
preorder = [3, 9, 20, 15, 7]
inorder = [9, 3, 15, 20, 7]
root = buildTree(preorder, inorder)
```
该代码将会创建如下的二叉树:
```
3
/ \
9 20
/ \
15 7
```
阅读全文