编写程序实现根据用户输入二叉树的先序序列建立一棵二叉树,并实现对此二叉树的先序中序和后序遍历
时间: 2023-10-13 09:21:16 浏览: 84
二叉树的几种操作,包括递归先序建立二叉树、先序遍历、中序遍历、后序遍历、非递归的各种遍历
5星 · 资源好评率100%
好的,下面是 Python 语言的实现代码:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def build_tree(preorder, inorder):
if not preorder:
return None
root_val = preorder[0]
root = TreeNode(root_val)
idx = inorder.index(root_val)
root.left = build_tree(preorder[1:idx+1], inorder[:idx])
root.right = build_tree(preorder[idx+1:], inorder[idx+1:])
return root
def preorder_traversal(root):
if not root:
return []
res = []
res.append(root.val)
res += preorder_traversal(root.left)
res += preorder_traversal(root.right)
return res
def inorder_traversal(root):
if not root:
return []
res = []
res += inorder_traversal(root.left)
res.append(root.val)
res += inorder_traversal(root.right)
return res
def postorder_traversal(root):
if not root:
return []
res = []
res += postorder_traversal(root.left)
res += postorder_traversal(root.right)
res.append(root.val)
return res
if __name__ == '__main__':
preorder = list(map(int, input().split()))
inorder = list(map(int, input().split()))
root = build_tree(preorder, inorder)
print(' '.join(map(str, preorder_traversal(root))))
print(' '.join(map(str, inorder_traversal(root))))
print(' '.join(map(str, postorder_traversal(root))))
```
输入格式为二叉树的先序遍历和中序遍历,输出格式为先序遍历、中序遍历和后序遍历的结果,均以空格分隔。
阅读全文