用c语言建立一个二叉链表
时间: 2024-02-13 08:00:54 浏览: 77
好的,下面是用 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 = (TreeNode*)malloc(sizeof(TreeNode));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
// 插入结点到二叉树
void insert(TreeNode** root, int data) {
if(*root == NULL) {
*root = createNode(data);
return;
}
if(data < (*root)->data) {
insert(&((*root)->left), data);
} else if(data > (*root)->data) {
insert(&((*root)->right), data);
}
}
// 中序遍历二叉树
void inorderTraversal(TreeNode* root) {
if(root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->data);
inorderTraversal(root->right);
}
int main() {
TreeNode* root = NULL;
insert(&root, 8);
insert(&root, 3);
insert(&root, 10);
insert(&root, 1);
insert(&root, 6);
insert(&root, 14);
insert(&root, 4);
insert(&root, 7);
insert(&root, 13);
printf("中序遍历结果:");
inorderTraversal(root);
return 0;
}
```
在这个示例代码中,我们定义了一个 `TreeNode` 结构体来表示二叉树的结点,其中包括了一个存储数据的 `data` 成员和指向左子树和右子树的指针 `left` 和 `right`。
我们还定义了一个 `createNode` 函数来创建新的二叉树结点,并返回该结点的指针。
在 `insert` 函数中,我们通过递归的方式将新的结点插入到二叉树中。如果当前节点为空,则说明这是树的根节点,我们直接创建一个新的结点作为根节点。否则,我们比较当前节点的值和新节点的值的大小关系,如果新节点的值小于当前节点的值,则递归插入到当前节点的左子树中,否则递归插入到当前节点的右子树中。
最后,我们定义了一个 `inorderTraversal` 函数来实现中序遍历二叉树,输出遍历结果。
在 `main` 函数中,我们创建一个空的二叉树,然后按照顺序插入一些数据,最后输出中序遍历的结果。
阅读全文