描述 按完全二叉树的顺序表示方式输入节点字母,建立二叉树。并先序遍历二叉树并输出。Input 有多组数据,每组数据按完全二叉树的顺序表示方式输入每个节点的字母(非空节点数小于等于10),如果节点为空,则输入"#"字符。结束输入"%"符号。以"@"表示所有输入完毕。输出输出各组先序遍历二叉树结果。样本输入 ABC##DE#####FGH% ABC% @ 样本输出 ABCDFGEH ABC
时间: 2024-03-05 22:48:21 浏览: 109
以下是Python的实现代码:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def build_tree(queue):
if not queue:
return None
val = queue.pop(0)
if val == '#':
return None
root = TreeNode(val)
root.left = build_tree(queue)
root.right = build_tree(queue)
return root
def preorder_traversal(root):
if not root:
return
print(root.val, end='')
preorder_traversal(root.left)
preorder_traversal(root.right)
while True:
s = input().strip()
if s == '@':
break
queue = list(s)
root = build_tree(queue)
preorder_traversal(root)
print()
```
首先定义了一个`TreeNode`类来表示二叉树的节点,包括节点的值和左右子节点。`build_tree`函数根据输入的队列来建立二叉树,如果队列为空则返回`None`,否则弹出队头元素,如果是`#`则返回`None`,否则创建一个新的节点,并递归构建左右子树。`preorder_traversal`函数用来对二叉树进行先序遍历,先输出当前节点的值,再递归遍历左右子树。
主程序中使用一个循环来读入多组数据,每次读入一行字符串后,将其转换为队列,然后调用`build_tree`函数建立二叉树,再调用`preorder_traversal`函数进行先序遍历输出。注意每组数据输出后要换行。
阅读全文