文档详情

红黑树的代码实现..doc

发布:2017-01-19约1.28万字共13页下载文档
文本预览下载声明
//by svking //2012.5 #include stdio.h #include stdlib.h #include time.h #define MAXSIZE 1000 typedef int ElemType; #define RED 0 #define BLACK 1 typedef struct RBTNode { char color; ElemType data; struct RBTNode * p; struct RBTNode * left; struct RBTNode * right; }RBTNode, * PRBTNode; typedef struct RBTree { PRBTNode root; PRBTNode nil; //统一的空节点,该节点是黑的 }RBTree, * PRBTree; int leftRotate (PRBTree tree, PRBTNode t); int rightRotate (PRBTree tree, PRBTNode t); PRBTNode insertRB (PRBTree tree, ElemType d); int insertRB_fixup (PRBTree tree, PRBTNode t); int createRBTree (PRBTree tree, ElemType d[], int n); int initRB (PRBTree tree); PRBTNode maximum (PRBTree tree, PRBTNode t); PRBTNode minimum (PRBTree tree, PRBTNode t); PRBTNode next (PRBTree tree, PRBTNode t); PRBTNode precursor (PRBTree tree, PRBTNode t); int walkNext (PRBTree tree); int inOrderWalk (PRBTree tree, PRBTNode t); int deleteRB_fixup (PRBTree tree, PRBTNode c); PRBTNode deleteRB (PRBTree tree, PRBTNode t); int main () { PRBTNode p; int d[MAXSIZE]; int n = 0; int i; RBTree tree; initRB(tree); /* insertRB(tree, 11); insertRB(tree, 2); insertRB(tree, 14); insertRB(tree, 1); insertRB(tree, 7); insertRB(tree, 15); insertRB(tree, 5); insertRB(tree, 8); insertRB(tree, 4); */ p= insertRB(tree, 26); insertRB(tree, 17); insertRB(tree, 41); insertRB(tree, 14); insertRB(tree, 21); insertRB(tree, 30); insertRB(tree, 47); insertRB(tree, 10); insertRB(tree, 16); insertRB(tree, 19); insertRB(tree, 23); insertRB(tree, 28); insertRB(tree, 38); insertRB(tree, 7); insertRB(tree, 12); insertRB(tree, 15); insertRB(tree, 20); insertRB(tree, 3); insertRB(tree, 35); insertRB(tree, 39); srand(time(NULL)); /* puts(请输入数据的个数:); scanf(%d,n); printf(随机生成的%d个数据是:\n,n); for (i = 0; i n; i++)
显示全部
相似文档