已知一个二叉树的中序遍历序列和后序遍历序列,求这棵树的前序遍历代码
时间: 2023-12-18 21:55:27 浏览: 115
利用二叉树中序及先序遍历确定该二叉树的后序序列
3星 · 编辑精心推荐
可以通过递归的方式来求解该问题,代码如下:
```python
def buildTree(inorder, postorder):
if not inorder:
return None
# 后序遍历的最后一个节点为根节点
root_val = postorder[-1]
# 在中序遍历中找到根节点的位置
idx = inorder.index(root_val)
# 递归构建左子树和右子树
left_tree = buildTree(inorder[:idx], postorder[:idx])
right_tree = buildTree(inorder[idx+1:], postorder[idx:-1])
# 构建当前节点并返回
root = TreeNode(root_val)
root.left = left_tree
root.right = right_tree
return root
# 测试代码
inorder = [9, 3, 15, 20, 7]
postorder = [9, 15, 7, 20, 3]
root = buildTree(inorder, postorder)
preorder_list = []
def preorderTraversal(root):
if root:
preorder_list.append(root.val)
preorderTraversal(root.left)
preorderTraversal(root.right)
return preorder_list
print(preorderTraversal(root))
```
输出结果为:
```
[3, 9, 20, 15, 7]
```
说明该树的前序遍历序列为 [3, 9, 20, 15, 7]。
阅读全文