编写一个程序包含二叉链存储结构类型定义,二叉树基本运算函数C语言
时间: 2024-10-17 19:05:40 浏览: 21
头歌数据结构二叉树的二叉链表存储及基本操作
5星 · 资源好评率100%
在C语言中,我们可以使用结构体定义二叉链表节点,并提供一些基本操作函数,如插入、删除和遍历等。以下是创建一个简单的二叉链表结构和基本操作的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉链表节点结构体
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
// 创建新节点的函数
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
newNode->data = value;
newNode->left = newNode->right = NULL;
return newNode;
}
// 插入节点到二叉链表的函数
Node* insertNode(Node* root, int value) {
if (root == NULL) {
return createNode(value);
}
if (value < root->data) {
root->left = insertNode(root->left, value);
} else if (value > root->data) {
root->right = insertNode(root->right, value);
}
return root;
}
// 删除节点的函数(这里仅示例删除根节点,实际应用需要考虑更复杂的情况)
void deleteRoot(Node** root) {
if (*root != NULL) {
Node* temp = *root;
*root = (*root)->left;
free(temp);
}
}
// 打印二叉链表的前序遍历
void printPreOrder(Node* root) {
if (root != NULL) {
printf("%d ", root->data);
printPreOrder(root->left);
printPreOrder(root->right);
}
}
int main() {
Node* root = NULL;
root = insertNode(root, 50); // 插入50
root = insertNode(root, 30); // 插入30
root = insertNode(root, 20); // 插入20
root = insertNode(root, 40); // 插入40
root = insertNode(root, 70); // 插入70
printf("Original tree:\n");
printPreOrder(root);
deleteRoot(&root); // 示例删除根节点,其他删除操作需要进一步处理
printf("\nAfter deletion:\n");
printPreOrder(root); // 输出删除后的遍历结果
return 0;
}
阅读全文