Python实现根据后序和中序遍历输出先序遍历,最后输出结果为preorder:以及该树的先序遍历结果
时间: 2024-03-18 14:21:10 浏览: 58
以下是Python代码实现:
```python
def build_tree(inorder, postorder):
if not inorder or not postorder:
return None
# 后序遍历的最后一个元素为根节点
root_val = postorder.pop()
root = TreeNode(root_val)
# 在中序遍历中找到根节点的位置
index = inorder.index(root_val)
# 递归构建左子树和右子树
root.right = build_tree(inorder[index+1:], postorder)
root.left = build_tree(inorder[:index], postorder)
return root
def preorder_traversal(root):
if not root:
return []
stack = [root]
res = []
# 先序遍历,根-左-右
while stack:
node = stack.pop()
res.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return res
# 测试
inorder = [9,3,15,20,7]
postorder = [9,15,7,20,3]
root = build_tree(inorder, postorder)
preorder = preorder_traversal(root)
print("preorder:", preorder)
```
输出结果为:
```
preorder: [3, 9, 20, 15, 7]
```
该树的先序遍历结果为 `[3, 9, 20, 15, 7]`。
阅读全文