c语言已知二叉树采用二叉链表存储,编写程序,要求建立一棵二叉树,并输出横向显示代码
时间: 2024-01-11 13:02:24 浏览: 100
C语言实现二叉链表存储
5星 · 资源好评率100%
以下是基于二叉链表存储结构的C语言程序,用于建立一棵二叉树并横向输出:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树节点结构体
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建二叉树节点
TreeNode* createNode(int data) {
TreeNode *node = malloc(sizeof(TreeNode));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
// 建立二叉树
TreeNode* createTree() {
int data;
scanf("%d", &data);
if (data == -1) {
return NULL;
}
TreeNode *root = createNode(data);
root->left = createTree();
root->right = createTree();
return root;
}
// 输出二叉树
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->data);
printTree(root->left, level + 1);
}
int main() {
printf("请输入二叉树节点的值,-1表示空节点:\n");
TreeNode *root = createTree();
printf("\n横向输出二叉树:\n");
printTree(root, 0);
return 0;
}
```
输入示例:
```
请输入二叉树节点的值,-1表示空节点:
1 2 4 -1 -1 5 -1 -1 3 6 -1 -1 7 -1 -1
```
输出示例:
```
横向输出二叉树:
7
3
6
1
5
2
4
```
阅读全文