C语言树状输出二叉树,体现出相对位置,不用加连线,要求结点存放字符,以#表示空结点,并且给出设计思想
时间: 2024-05-12 09:19:24 浏览: 70
及节点的子树结构形式输出。
要实现树状输出二叉树,可以使用递归算法,在每个节点处输出该节点的字符,然后分别递归输出该节点的左子树和右子树。在递归输出左子树之前,需要输出一个缩进,以体现出相对位置。
示例代码如下:
```
void print_tree(Node* root, int depth) {
if (root == NULL) {
return;
}
printf("%s%c\n", depth > 0 ? "| " : "", root->data); // 输出节点字符,根节点不需要缩进
if (root->left != NULL) {
for (int i = 0; i < depth; i++) {
printf("| ");
}
printf("+--"); // 左子树的缩进和连接线
print_tree(root->left, depth + 1);
}
if (root->right != NULL) {
for (int i = 0; i < depth; i++) {
printf("| ");
}
printf("`--"); // 右子树的缩进和连接线
print_tree(root->right, depth + 1);
}
}
```
调用该函数时,传入二叉树的根节点和初始深度0即可。
```
print_tree(root, 0);
```
输出结果类似于以下形式:
```
A
|--B
| |--D
| | |--H
| | | `--K
| | `--I
| `--E
|--C
| |--F
| `--G
`--X
```
阅读全文