python已知二叉树的先序和中序遍历,输出二叉树的后序遍历
时间: 2023-06-21 20:05:06 浏览: 101
通过先序遍历和中序遍历后的序列还原二叉树(实现方法)
通过先序遍历可以得到二叉树的根节点,而中序遍历可以将左右子树分开。因此,可以通过这两个遍历序列构造出二叉树,然后再进行后序遍历。
以下是 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)
i = inorder.index(root_val)
root.left = buildTree(preorder[1:i+1], inorder[:i])
root.right = buildTree(preorder[i+1:], inorder[i+1:])
return root
def postorderTraversal(root):
res = []
def dfs(node):
if not node:
return
dfs(node.left)
dfs(node.right)
res.append(node.val)
dfs(root)
return res
preorder = [1,2,4,5,3,6,7]
inorder = [4,2,5,1,6,3,7]
root = buildTree(preorder, inorder)
result = postorderTraversal(root)
print(result)
```
输出结果为:
```
[4, 5, 2, 6, 7, 3, 1]
```
阅读全文