001 红黑树(二)之 C语言的实现(3)
红黑树的测试文件(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)相关推荐
- 红黑树(二)之 C语言的实现
红黑树(二)之 C语言的实现 概要 红黑树在日常的使用中比较常用,例如Java的TreeMap和TreeSet,C++的STL,以及Linux内核中都有用到.之前写过一篇文章专门介绍红黑树的理论知识, ...
- 红黑树(一)之 原理和算法详细介绍---转帖
目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树的基本操作(一) 左旋和右旋 5 红黑树的基本操作(二) 添加 6 红黑树的基本操作(三) 删除 作者:Sky W ...
- 红黑树(三)之 C++的实现
概要 前面分别介绍红黑树的理论知识和红黑树的C语言实现.本章是红黑树的C++实现,若读者对红黑树的理论知识不熟悉,建立先学习红黑树的理论知识,再来学习本章. 目录 1. 红黑树的介绍 2. 红黑树的C ...
- 红黑树(一)之 原理和算法详细介绍
出处:http://www.cnblogs.com/skywang12345/p/3245399.html 概要 目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树 ...
- 红黑树 之 原理和算法详细介绍
概要 目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树的基本操作(一) 左旋和右旋 5 红黑树的基本操作(二) 添加 6 红黑树的基本操作(三) 删除 作者:Sk ...
- 红黑树动画+红黑树算法详细介绍
说起红黑树,先给一个js的实现.可以动画看效果 https://www.cs.usfca.edu/~galles/visualization/RedBlack.html 然后算法问题,我再描述一遍也没 ...
- 红黑树 键值_查找(一)史上最简单清晰的红黑树讲解
http://blog.csdn.net/yang_yulei/article/details/26066409 查找(一) 我们使用符号表这个词来描述一张抽象的表格,我们会将信息(值)存储在其中,然 ...
- 查找(一)史上最简单清晰的红黑树讲解 http://blog.csdn.net/yang_yulei/article/details/26066409
查找(一)史上最简单清晰的红黑树讲解 2014-05-18 00:05 4037人阅读 评论(6) 收藏 举报 分类: 数据结构(7) 算法(4) 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- 常见的数据结构:栈 队列 数组 链表 红黑树——List集合 _ HashSet集合、可变参数 collections集合 Map集合
2021-06-07复习java 一.常见的数据结构 栈(先进后出) 队列 数组 链表 红黑树 二.List集合_介绍&常用方法 ArrayList集合 Linkedlist集合 三.Hash ...
- 红黑树,看不懂你找我
文章目录 一:什么是红黑树 二:关于红黑树的一般操作 1.查找操作 2. 插入操作 2.1 新节点:我是红色的,我爹是红色的,我叔叔是黑色的 2.2 新节点:我是红色的,我爹是红色的,我叔叔也是红色的 ...
最新文章
- 原生js实现Object.assign和Object.create
- android 自定义actionbar前面有一块空白,解决Android V7后自定义Toolbar、ActionBar左侧有空白问题...
- R语言实战-统计分析基础-描述性统计4-psych-describe
- 计算机中减法的实现原理
- k8s 基础介绍及概念
- c++面向对象高级编程 学习七 转换函数
- WAS6.1在JDK1.5环境下JSP无法编译问题
- 基于Websocket草案10协议的升级及基于Netty的握手实现
- 在windows下添加php的Imagick扩展
- php 利用cookie实现访问次数统计
- HTML5_2(视频)
- 超酷,用 Python 教你绘制皮卡丘和哆啦A梦
- WinForm常用控件
- springCloud笔记——微服务介绍
- 图像处理学习笔记之——绪论
- CUMT网络安全课程复习
- java微信消息发送消息_JAVA模拟微信消息发送请求
- html调用一言api,「许巍定制」自建 Typecho/WordPress 一言API本地服务并调用
- LTE初始随机接入过程
- 如何做好一个项目管理呢?