二叉树的树状打印输出C语言
时间: 2023-06-17 11:05:29 浏览: 125
二叉树程序设计-c语言(打印).doc
在C语言中,可以使用递归的方式实现二叉树的树状打印输出。具体实现步骤如下:
1. 定义一个递归函数,参数为二叉树的指针和当前节点的层数。
2. 在函数中,先判断当前节点是否为空,如果是,则直接返回。
3. 对于非空节点,先递归输出右子树,再输出当前节点的值和层数。
4. 最后递归输出左子树,注意层数加1。
下面是具体的实现代码:
```c
#include <stdio.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
void printTree(TreeNode* root, int level) {
if (root == NULL) {
return;
}
printTree(root->right, level + 1);
for (int i = 0; i < level; i++) {
printf(" ");
}
printf("%d\n", root->val);
printTree(root->left, level + 1);
}
int main() {
// 构造一个二叉树
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = 1;
TreeNode* node1 = (TreeNode*)malloc(sizeof(TreeNode));
node1->val = 2;
TreeNode* node2 = (TreeNode*)malloc(sizeof(TreeNode));
node2->val = 3;
TreeNode* node3 = (TreeNode*)malloc(sizeof(TreeNode));
node3->val = 4;
TreeNode* node4 = (TreeNode*)malloc(sizeof(TreeNode));
node4->val = 5;
root->left = node1;
root->right = node2;
node1->left = node3;
node1->right = node4;
node2->left = NULL;
node2->right = NULL;
node3->left = NULL;
node3->right = NULL;
node4->left = NULL;
node4->right = NULL;
// 打印二叉树
printTree(root, 0);
return 0;
}
```
以上代码输出如下结果:
```
5
2
4
1
3
```
可以看到,输出的结果是树状的,每个节点的左子树在上面,右子树在下面,节点的值在中间。
阅读全文