#include <stdio.h>
#include <stdlib.h>
typedef enum { RED, BLACK } Color;
typedef struct rb_node_t {
int key;
struct rb_node_t *left;
struct rb_node_t *right;
struct rb_node_t *parent;
Color color;
} RBNode;
RBNode *rb_search(RBNode *node, int key) {
while (node != NULL) {
if (key < node->key)
node = node->left;
else if (key > node->key)
node = node->right;
else
return node;
}
return NULL;
}
RBNode *rb_insert(RBNode *node, int key) {
if (node == NULL) {
RBNode *new_node = (RBNode *)malloc(sizeof(RBNode));
new_node->key = key;
new_node->left = new_node->right = NULL;
new_node->parent = NULL;
new_node->color = RED;
return new_node;
}
if (key < node->key) {
node->left = rb_insert(node->left, key);
node->left->parent = node;
} else if (key > node->key) {
node->right = rb_insert(node->right, key);
node->right->parent = node;
}
// 插入后的平衡处理...
return node;
}
void inorder_print(RBNode *node) {
if (node == NULL)
return;
inorder_print(node->left);
printf("%d ", node->key);
inorder_print(node->right);
}
int main() {
RBNode *root = NULL;
root = rb_insert(root, 10);
root = rb_insert(root, 15);
root = rb_insert(root, 5);
root = rb_insert(root, 7);
root = rb_insert(root, 12);
root = rb_insert(root, 14);
root = rb_insert(root, 17);
root = rb_insert(root, 3);
printf("Inorder traversal of the created red-black tree:\n");
inorder_print(root);
printf("\n");
RBNode *search_node = rb_search(root, 17);
if (search_node != NULL)
printf("Key found: %d\n", search_node->key);
else
printf("Key not found\n");
return 0;
}
C语言实现红黑树
最新推荐文章于 2024-07-22 17:11:23 发布
本文介绍了如何使用C语言实现红黑树的数据结构,包括节点定义、插入函数、搜索功能以及中序遍历的演示。展示了红黑树的基本操作过程。
摘要由CSDN通过智能技术生成