You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.1 KiB

#pragma once
#define RED 0 // <20><>ɫ<EFBFBD>ڵ<EFBFBD>
#define BLACK 1 // <20><>ɫ<EFBFBD>ڵ<EFBFBD>
#include "List.h"
typedef struct RBleaf {
int hashfile;
char filename[50];
LinkList index;
}RBleaf;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľڵ<C4BD>
typedef struct RBTreeNode {
unsigned char color; // <20><>ɫ(RED <20><> BLACK)
RBleaf key; // <20>ؼ<EFBFBD><D8BC><EFBFBD>(<28><>ֵ)
struct RBTreeNode *left; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct RBTreeNode *right; // <20>Һ<EFBFBD><D2BA><EFBFBD>
struct RBTreeNode *parent; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}Node, *RBTree;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>
typedef struct rb_root {
Node *node;
}RBRoot;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>"<22><>
RBRoot* create_rbtree();
// <20><><EFBFBD>ٺ<EFBFBD><D9BA><EFBFBD><EFBFBD><EFBFBD>
void destroy_rbtree(RBRoot *root);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>-1<><31>
int insert_rbtree(RBRoot *root, RBleaf key);
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(keyΪ<79>ڵ<EFBFBD><DAB5><EFBFBD>ֵ)
void delete_rbtree(RBRoot *root, RBleaf key);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
void inorder_rbtree(RBRoot *root);
// (<28>ݹ<EFBFBD>ʵ<EFBFBD><CAB5>)<29><><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22>м<EFBFBD>ֵΪkey<65>Ľڵ㡣<DAB5>ҵ<EFBFBD><D2B5>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>򣬷<EFBFBD><F2A3ACB7><EFBFBD>-1<><31>
RBleaf* rbtree_search(RBRoot *root, int hashkey);
// <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void print_rbtree(RBRoot *root);