红黑树的测试文件(rbtree_test.c):

 1/**2 * C语言实现的红黑树(Red Black Tree)3 *4 * @author skywang5 * @date 2013/11/186 */7#include <stdio.h>8#include "rbtree.h"9#define CHECK_INSERT 0    // "插入"动作的检测开关(0,关闭;1,打开)
10#define CHECK_DELETE 0    // "删除"动作的检测开关(0,关闭;1,打开)
11#define LENGTH(a) ( (sizeof(a)) / (sizeof(a[0])) )
12void main()
13{
14    int a[] = {10, 40, 30, 60, 90, 70, 20, 50, 80};
15    int i, ilen=LENGTH(a);
16    RBRoot *root=NULL;
17    root = create_rbtree();
18    printf("== 原始数据: ");
19    for(i=0; i<ilen; i++)
20        printf("%d ", a[i]);
21    printf("\n");
22    for(i=0; i<ilen; i++)
23    {
24        insert_rbtree(root, a[i]);
25#if CHECK_INSERT
26        printf("== 添加节点: %d\n", a[i]);
27        printf("== 树的详细信息: \n");
28        print_rbtree(root);
29        printf("\n");
30#endif
31    }
32    printf("== 前序遍历: ");
33    preorder_rbtree(root);
34    printf("\n== 中序遍历: ");
35    inorder_rbtree(root);
36    printf("\n== 后序遍历: ");
37    postorder_rbtree(root);
38    printf("\n");
39    if (rbtree_minimum(root, &i)==0)
40        printf("== 最小值: %d\n", i);
41    if (rbtree_maximum(root, &i)==0)
42        printf("== 最大值: %d\n", i);
43    printf("== 树的详细信息: \n");
44    print_rbtree(root);
45    printf("\n");
46#if CHECK_DELETE
47    for(i=0; i<ilen; i++)
48    {
49        delete_rbtree(root, a[i]);
50        printf("== 删除节点: %d\n", a[i]);
51        if (root)
52        {
53            printf("== 树的详细信息: \n");
54            print_rbtree(root);
55            printf("\n");
56        }
57    }
58#endif
59    destroy_rbtree(root);
60}

红黑树的C测试程序

前面已经给出了红黑树的测试程序(rbtree_test.c),这里就不再重复说明。下面是测试程序的运行结果:

 1== 原始数据: 10 40 30 60 90 70 20 50 80 2== 前序遍历: 30 10 20 60 40 50 80 70 90 3== 中序遍历: 10 20 30 40 50 60 70 80 90 4== 后序遍历: 20 10 50 40 70 90 80 60 30 5== 最小值: 106== 最大值: 907== 树的详细信息: 830(B) is root910(B) is 30's   left child
1020(R) is 10's  right child
1160(R) is 30's  right child
1240(B) is 60's   left child
1350(R) is 40's  right child
1480(B) is 60's  right child
1570(R) is 80's   left child
1690(R) is 80's  right child

001 红黑树(二)之 C语言的实现(3)相关推荐

  1. 红黑树(二)之 C语言的实现

    红黑树(二)之 C语言的实现 概要 红黑树在日常的使用中比较常用,例如Java的TreeMap和TreeSet,C++的STL,以及Linux内核中都有用到.之前写过一篇文章专门介绍红黑树的理论知识, ...

  2. 红黑树(一)之 原理和算法详细介绍---转帖

    目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树的基本操作(一) 左旋和右旋 5 红黑树的基本操作(二) 添加 6 红黑树的基本操作(三) 删除 作者:Sky W ...

  3. 红黑树(三)之 C++的实现

    概要 前面分别介绍红黑树的理论知识和红黑树的C语言实现.本章是红黑树的C++实现,若读者对红黑树的理论知识不熟悉,建立先学习红黑树的理论知识,再来学习本章. 目录 1. 红黑树的介绍 2. 红黑树的C ...

  4. 红黑树(一)之 原理和算法详细介绍

    出处:http://www.cnblogs.com/skywang12345/p/3245399.html 概要 目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树 ...

  5. 红黑树 之 原理和算法详细介绍

    概要 目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树的基本操作(一) 左旋和右旋 5 红黑树的基本操作(二) 添加 6 红黑树的基本操作(三) 删除 作者:Sk ...

  6. 红黑树动画+红黑树算法详细介绍

    说起红黑树,先给一个js的实现.可以动画看效果 https://www.cs.usfca.edu/~galles/visualization/RedBlack.html 然后算法问题,我再描述一遍也没 ...

  7. 红黑树 键值_查找(一)史上最简单清晰的红黑树讲解

    http://blog.csdn.net/yang_yulei/article/details/26066409 查找(一) 我们使用符号表这个词来描述一张抽象的表格,我们会将信息(值)存储在其中,然 ...

  8. 查找(一)史上最简单清晰的红黑树讲解 http://blog.csdn.net/yang_yulei/article/details/26066409

    查找(一)史上最简单清晰的红黑树讲解 2014-05-18 00:05 4037人阅读 评论(6) 收藏 举报 分类: 数据结构(7) 算法(4) 版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  9. 常见的数据结构:栈 队列 数组 链表 红黑树——List集合 _ HashSet集合、可变参数 collections集合 Map集合

    2021-06-07复习java 一.常见的数据结构 栈(先进后出) 队列 数组 链表 红黑树 二.List集合_介绍&常用方法 ArrayList集合 Linkedlist集合 三.Hash ...

  10. 红黑树,看不懂你找我

    文章目录 一:什么是红黑树 二:关于红黑树的一般操作 1.查找操作 2. 插入操作 2.1 新节点:我是红色的,我爹是红色的,我叔叔是黑色的 2.2 新节点:我是红色的,我爹是红色的,我叔叔也是红色的 ...

最新文章

  1. 原生js实现Object.assign和Object.create
  2. android 自定义actionbar前面有一块空白,解决Android V7后自定义Toolbar、ActionBar左侧有空白问题...
  3. R语言实战-统计分析基础-描述性统计4-psych-describe
  4. 计算机中减法的实现原理
  5. k8s 基础介绍及概念
  6. c++面向对象高级编程 学习七 转换函数
  7. WAS6.1在JDK1.5环境下JSP无法编译问题
  8. 基于Websocket草案10协议的升级及基于Netty的握手实现
  9. 在windows下添加php的Imagick扩展
  10. php 利用cookie实现访问次数统计
  11. HTML5_2(视频)
  12. 超酷,用 Python 教你绘制皮卡丘和哆啦A梦
  13. WinForm常用控件
  14. springCloud笔记——微服务介绍
  15. 图像处理学习笔记之——绪论
  16. CUMT网络安全课程复习
  17. java微信消息发送消息_JAVA模拟微信消息发送请求
  18. html调用一言api,「许巍定制」自建 Typecho/WordPress 一言API本地服务并调用
  19. LTE初始随机接入过程
  20. 如何做好一个项目管理呢?

热门文章

  1. copy uncode Cstring
  2. 面试字节跳动后台开发(实习)
  3. Verilog全加器
  4. 水星路由器登录界面找不到服务器,新版水星(Mercurey)路由器后台登陆界面打不开怎么办?...
  5. WIFI后台数据一文解释通
  6. 鄂州市网站建设多少钱,鄂州市建设企业网站要多少钱
  7. 图像表示的相关概念:图像深度、像素深度、位深的区别和关系
  8. php7 codeigniter 404,使用codeigniter出现404问题
  9. 019-zabbix数据库表详解
  10. FPGA虚拟化:突破次元壁的技术