用C语言以二叉链表表示二叉树,建立一棵二叉树
时间: 2023-07-11 16:21:01 浏览: 55
好的,下面是用C语言以二叉链表表示二叉树的代码示例,包括二叉树的建立和打印:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建二叉树
TreeNode* createTree() {
int val;
TreeNode *root = NULL;
scanf("%d", &val);
if (val != -1) {
root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = val;
root->left = createTree();
root->right = createTree();
}
return root;
}
// 打印二叉树(中序遍历)
void printTree(TreeNode *root) {
if (root != NULL) {
printTree(root->left);
printf("%d ", root->val);
printTree(root->right);
}
}
int main() {
printf("请输入二叉树的节点,-1表示空节点:\n");
TreeNode *root = createTree();
printf("二叉树的节点(中序遍历):\n");
printTree(root);
printf("\n");
return 0;
}
```
运行示例:
```
请输入二叉树的节点,-1表示空节点:
1
2
-1
-1
3
4
-1
-1
5
-1
-1
二叉树的节点(中序遍历):
2 1 4 3 5
```
以上代码实现了二叉树的建立和中序遍历打印。在创建二叉树时,我们采用递归的方式,每次输入一个节点的值,如果是空节点就返回NULL,否则就创建一个新的节点,并继续递归创建它的左子树和右子树。在打印二叉树时,我们采用中序遍历的方式,先打印左子树,再打印根节点,最后打印右子树。