红黑树的测试文件(rbtree_test.c):
1/**
2*C语言实现的红黑树(RedBlackTree)
3*
4* @author skywang
5* @date2013/11/18
6*/
7#include<stdio.h>
8#include"rbtree.h"
9#defineCHECK_INSERT0//"插入"动作的检测开关(0,关闭;1,打开)
10#defineCHECK_DELETE0//"删除"动作的检测开关(0,关闭;1,打开)
11#defineLENGTH(a) ( (sizeof(a)) / (sizeof(a[0])) )
12voidmain()
13
{
14inta[] = {10,40,30,60,90,70,20,50,80};
15inti, ilen=LENGTH(a);
16RBRoot*root=NULL;
17root = create_rbtree();
18printf("== 原始数据: ");
19for(i=0; i
20printf("%d ", a[i]);
21printf("\n");
22for(i=0; i
23{
24insert_rbtree(root, a[i]);
25#ifCHECK_INSERT
26printf("== 添加节点: %d\n", a[i]);
27printf("== 树的详细信息: \n");
28print_rbtree(root);
29printf("\n");
30#endif
31}
32printf("== 前序遍历: ");
33preorder_rbtree(root);
34printf("\n== 中序遍历: ");
35inorder_rbtree(root);
36printf("\n== 后序遍历: ");
37postorder_rbtree(root);
38printf("\n");
39if(rbtree_minimum(root, &i)==0)
40printf("== 最小值: %d\n", i);
41if(rbtree_maximum(root, &i)==0)
42printf("== 最大值: %d\n", i);
43printf("== 树的详细信息: \n");
44print_rbtree(root);
45printf("\n");
46#ifCHECK_DELETE
47for(i=0; i
48{
49delete_rbtree(root, a[i]);
50printf("== 删除节点: %d\n", a[i]);
51if(root)
52{
53printf("== 树的详细信息: \n");
54print_rbtree(root);
55printf("\n");
56}
57}
58#endif
59destroy_rbtree(root);
60}
红黑树的C测试程序
前面已经给出了红黑树的测试程序(rbtree_test.c),这里就不再重复说明。下面是测试程序的运行结果:
1== 原始数据:104030609070205080
2== 前序遍历:301020604050807090
3== 中序遍历:102030405060708090
4== 后序遍历:201050407090806030
5== 最小值:10
6== 最大值:90
7== 树的详细信息:
830(B)isroot
910(B)is30'sleftchild
1020(R)is10'srightchild
1160(R)is30'srightchild
1240(B)is60'sleftchild
1350(R)is40'srightchild
1480(B)is60'srightchild
1570(R)is80'sleftchild
1690(R)is80'srightchild
看我主页简介免费C++学习资源,视频教程、职业规划、面试详解、学习路线、开发工具
每晚8点直播讲解C++编程技术。
网友评论