用先序遍历的方法建立一颗二叉树(递归实现)
时间: 2024-03-01 18:46:06 浏览: 62
以下是使用先序遍历递归实现建立二叉树的方法:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def buildTree(preorder, inorder):
if not preorder or not inorder:
return None
root = TreeNode(preorder[0])
mid = inorder.index(preorder[0])
root.left = buildTree(preorder[1:mid+1], inorder[:mid])
root.right = buildTree(preorder[mid+1:], inorder[mid+1:])
return root
```
其中,`preorder`表示先序遍历的结果,`inorder`表示中序遍历的结果。我们首先创建一个`TreeNode`类,然后定义一个`buildTree`函数来递归建立二叉树。具体实现如下:
1. 如果`preorder`或`inorder`为空,则返回`None`。
2. 创建一个根节点,值为`preorder`的第一个元素。
3. 找到根节点在`inorder`中的位置,将`inorder`分为左子树和右子树。
4. 递归调用`buildTree`函数,分别传入左子树的`preorder`和`inorder`,以及右子树的`preorder`和`inorder`,分别作为根节点的左右子树。
5. 返回根节点。
阅读全文