利用扩充先序序列建立二叉树并输出中序序列和后序序列
时间: 2023-12-08 13:57:55 浏览: 116
好的,这是一个二叉树建立的经典问题。先给你一个简单的方法:
1. 根据扩展先序序列建立二叉树,其中 "#" 表示空节点。
2. 对建立好的二叉树进行中序遍历,输出中序序列。
3. 对建立好的二叉树进行后序遍历,输出后序序列。
具体实现可以采用递归方法:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def build_tree(preorder: List[str]) -> TreeNode:
if not preorder:
return None
val = preorder.pop(0)
if val == "#":
return None
node = TreeNode(int(val))
node.left = build_tree(preorder)
node.right = build_tree(preorder)
return node
def inorder_traversal(root: TreeNode) -> List[int]:
if not root:
return []
result = []
result += inorder_traversal(root.left)
result.append(root.val)
result += inorder_traversal(root.right)
return result
def postorder_traversal(root: TreeNode) -> List[int]:
if not root:
return []
result = []
result += postorder_traversal(root.left)
result += postorder_traversal(root.right)
result.append(root.val)
return result
```
使用方式:
```python
preorder = ["1", "2", "#", "4", "#", "#", "3", "#", "5", "#", "#"]
root = build_tree(preorder)
inorder = inorder_traversal(root)
postorder = postorder_traversal(root)
print("中序序列:", inorder)
阅读全文