根据后序和中序遍历输出先序遍历
时间: 2023-11-17 17:07:24 浏览: 65
好的,这个问题可以用递归方法解决。先从后序遍历找到根结点,然后在中序遍历中找到根结点的位置,将中序遍历分为左子树和右子树两部分。在后序遍历中分别找到左子树和右子树的结点,递归处理左右子树即可。具体的实现可以参考以下代码:
```python
def buildTree(inorder, postorder):
if not inorder or not postorder:
return None
root_val = postorder[-1]
root = TreeNode(root_val)
index = inorder.index(root_val)
root.left = buildTree(inorder[:index], postorder[:index])
root.right = buildTree(inorder[index+1:], postorder[index:-1])
return root
# 测试代码
inorder = [9,3,15,20,7]
postorder = [9,15,7,20,3]
root = buildTree(inorder, postorder)
print_tree(root)
```
其中 print_tree 函数可以用来输出二叉树的先序遍历,具体实现可以参考以下代码:
```python
def print_tree(root):
if root:
print(root.val)
print_tree(root.left)
print_tree(root.right)
```
阅读全文