二叉查找树
来源:互联网 发布:python 英文词性标注 编辑:程序博客网 时间:2024/06/06 02:49
1、定义
二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree);
所谓二叉查找树,就是保证对于任意一点,若左子树非空,左子树上所有结点的值都小于它本身,若右子树非空,右子树上所有结点的值大于它本身。那么显然,它没有值相等的结点,而且中序遍历就是一个从小到大的排好序的序列。
2、实现
通过点的逐次插入实现,时间复杂度为O(nlogn)。
然后插入4,4>3,到它右儿子结点,因为右儿子结点空,故4为3的右儿子结点;
然后插入5,5>3,到它右儿子结点4,5>4,再到右儿子结点,因为右儿子结点空,故5是4的右儿子结点;
然后插入8,同理它是5的右儿子结点;以此类推,19是8的右儿子结点;
最后插入6,6>3,6>4,6>5,但是6<19,所以它是19的左儿子结点。
本人不擅长作图,大家可以在画图软件上画一画以方便理解。
代码:
1 void insert(int i,int now) //i为当前结点,now为其键值
2 {
3 if (i>m) //m为总结点数
4 {
5 m++;
6 a[m].value=now; //a[i].value表示第i点的键值
7 return;
8 }
9 if (now<a[i].value)
10 {
11 if (a[i].l!=0)
12 insert(a[i].l,now);
13 else
14 {
15 a[i].l=m+1;
16 insert(m+1,now);
17 }
18 } //a[i].l表示左儿子结点
19 else if (now>a[i].value)
20 {
21 num[i]++;
22 if (a[i].r!=0)
23 insert(a[i].r,now);
24 else
25 {
26 a[i].r=m+1;
27 insert(m+1,now);
28 }
29 } //a[i].r表示右儿子结点
30}
- 查找--二叉查找树
- 二叉树、二叉查找树
- 二叉树 & 二叉查找树
- 【查找结构】二叉查找树
- 查找之二叉树查找
- 查找之二叉树查找
- 查找:二叉查找树总结
- 二叉树查找树...
- 二叉树查找树
- 查找--遍历二叉树
- 二叉查找树
- 二叉查找树实现
- 二叉查找树
- 动态二叉查找树
- 最优二叉查找树
- 二叉查找树
- 二叉查找树
- 平衡二叉查找树
- Solr集群的搭建以及使用
- nginx+ftp搭建图片服务器(Windows Server服务器环境下)
- JSONUtil工具类
- 树状数组模板
- JS判断客户端是否是iOS或者Android手机移动端
- 二叉查找树
- webService与HTTP的关系
- BZOJ1079 [SCOI2008]着色方案 记忆化搜索DP 妙啊
- Java实现——求整数数组中出现次数超过数组长度一半的元素
- 使用淘宝镜像cnpm安装Vue.js
- coci2014 contest#1 T5-zabavz—— dp
- cookie和session
- 关于jquery.searchableSelect.js两个文本框分别判断操作
- 服务器命令整理