3.打印二叉树结构(设计性实验) 问题描述 按凹入表形式横向打印二叉树结构,即二叉树的根在屏幕的最左边,二叉树的左子树在屏幕的下边,二叉树的右子树在屏幕的上边。二叉树节点数据为字符。用C语言代码实现
时间: 2024-01-22 19:20:43 浏览: 22
以下是一个简单的实现,使用了递归来遍历二叉树。每个节点都打印在它的子节点下方,并缩进一定数量的空格以显示其层次结构。
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
char val;
struct TreeNode* left;
struct TreeNode* right;
};
void printTree(struct TreeNode* root, int depth) {
if (root == NULL) {
return;
}
printTree(root->right, depth + 1);
for (int i = 0; i < depth; i++) {
printf(" ");
}
printf("%c\n", root->val);
printTree(root->left, depth + 1);
}
int main() {
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = 'A';
root->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->left->val = 'B';
root->left->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->left->left->val = 'D';
root->left->left->left = NULL;
root->left->left->right = NULL;
root->left->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->left->right->val = 'E';
root->left->right->left = NULL;
root->left->right->right = NULL;
root->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->val = 'C';
root->right->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->left->val = 'F';
root->right->left->left = NULL;
root->right->left->right = NULL;
root->right->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->right->val = 'G';
root->right->right->left = NULL;
root->right->right->right = NULL;
printTree(root, 0);
return 0;
}
```
输出结果为:
```
D
B
E
A
F
C
G
```