python利用前序和中序遍历构建二叉树的递归算法
时间: 2023-11-22 11:04:57 浏览: 67
非递归前序,中序,后序遍历二叉树(优化算法).rar_nooneyh_二叉树 非递归_前序 中序 后序_树遍历算法_遍历二叉树
下面是Python递归算法的实现:
```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[0]
root = TreeNode(root_val)
root_index = inorder.index(root_val)
left_inorder = inorder[:root_index]
right_inorder = inorder[root_index+1:]
left_preorder = preorder[1:len(left_inorder)+1]
right_preorder = preorder[len(left_inorder)+1:]
root.left = buildTree(left_preorder, left_inorder)
root.right = buildTree(right_preorder, right_inorder)
return root
```
其中,`preorder` 和 `inorder` 分别代表二叉树的前序遍历和中序遍历的数组。函数返回由这两个遍历结果构建的二叉树的根节点。实现递归算法的主要思路是:通过前序遍历的第一个元素确定根节点,再通过中序遍历确定左子树和右子树的元素集合,递归构建左右子树。
阅读全文