001 红黑树(二)之 C语言的实现(3)

2019-06-26  本文已影响0人  编程小世界

红黑树的测试文件(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++编程技术。

上一篇 下一篇

猜你喜欢

热点阅读