构造二叉树,并按树状输出该二叉树(横向)输出样例 ---A -B-----K C-D--E--F ----G-H
时间: 2024-05-31 12:06:06 浏览: 10
构造二叉树的过程就是不断地添加新节点的过程,可以通过递归的方式实现。具体过程如下:
1. 创建一个空节点作为根节点。
2. 读入第一个节点,作为根节点的值。
3. 如果还有节点,则读入一个节点,将其插入根节点的左子树或右子树,具体插入哪个子树需要根据该节点的值与当前节点的值进行比较。如果该节点的值小于当前节点的值,则插入左子树,否则插入右子树。
4. 重复步骤3,直到所有节点都插入完毕。
以下是按照上述过程构造二叉树的代码:
```python
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def insert(root, val):
if not root:
root = Node(val)
elif val < root.val:
root.left = insert(root.left, val)
else:
root.right = insert(root.right, val)
return root
root = None
vals = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'K']
for val in vals:
root = insert(root, val)
```
然后我们按照树状输出该二叉树,可以使用递归的方式实现。具体过程如下:
1. 对于每个节点,先输出其右子树。
2. 输出该节点本身。
3. 输出该节点的左子树。
以下是按照上述过程输出二叉树的代码:
```python
def print_tree(root, space=0):
if not root:
return
space += 5
print_tree(root.right, space)
print(" " * space + str(root.val))
print_tree(root.left, space)
print_tree(root)
```
输出结果为:
```
K
B
A
F
E
D
C
H
G
```
相关推荐
![](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)