输入样列 ABC..D..KEG..H..F.. 输出样例 ---A -B-----K C-D--E--F ----G-H
时间: 2024-05-31 21:06:06 浏览: 16
这道题目是要求我们将输入的字符串转换成一棵树,并输出树的形状。具体来说,树的根节点是第一个字符,每当我们读到一个新的字符时,就将其作为当前节点的子节点添加到树中。如果遇到了'.',则表示当前节点已经添加完毕,需要返回上一级节点。
以下是处理输入样例的伪代码:
```
root = Node(A)
cur_node = root
for i in range(1, len(input_str)):
c = input_str[i]
if c == '.':
cur_node = cur_node.parent
else:
new_node = Node(c)
cur_node.add_child(new_node)
cur_node = new_node
```
其中,Node类表示树的一个节点,包含一个value属性表示节点的值,一个children属性表示子节点列表,以及一个parent属性表示父节点。add_child方法用于向children列表中添加一个子节点。
接下来,我们需要输出树的形状。可以采用递归的方式实现:
```
def print_tree(node, depth=0):
if node is None:
return
print('-' * depth + node.value)
for child in node.children:
print_tree(child, depth+1)
```
其中,depth表示当前节点的深度,用于控制输出'-'的数量。在每个节点前面输出depth个'-'即可。
相关推荐
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)