用c语言建立一个二叉链表
时间: 2024-03-06 15:47:05 浏览: 68
好的,以下是用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* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点
void insertNode(TreeNode* root, int data) {
if (root == NULL) {
root = createNode(data);
return;
}
if (data <= root->data) {
if (root->left == NULL) {
root->left = createNode(data);
} else {
insertNode(root->left, data);
}
} else {
if (root->right == NULL) {
root->right = createNode(data);
} else {
insertNode(root->right, data);
}
}
}
// 前序遍历
void preOrderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->data);
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
int main() {
TreeNode* root = NULL; // 初始化根节点为空
insertNode(root, 5);
insertNode(root, 3);
insertNode(root, 7);
insertNode(root, 1);
insertNode(root, 4);
insertNode(root, 6);
insertNode(root, 8);
printf("前序遍历结果:");
preOrderTraversal(root);
return 0;
}
```
上述代码中,我们定义了一个二叉树节点结构体 `TreeNode`,其中包含数据域 `data` 和左右子节点指针 `left` 和 `right`。我们使用 `createNode` 函数创建新节点,并使用 `insertNode` 函数将新节点插入到二叉树中。最后,我们使用 `preOrderTraversal` 函数对二叉树进行前序遍历,并输出遍历结果。
注意,在 `insertNode` 函数中,我们使用了递归的方式插入新节点。在递归调用时,我们需要判断左右子节点是否为空,若为空则新建节点并赋值给左右子节点指针,否则继续递归到左右子节点进行插入操作。
以上是一个简单的二叉链表的实现,你可以根据需要进行修改和扩展。
阅读全文