就平均时间性能而言,二叉排序树上的查找和二分查找差不多。静态查找:数据集合稳定,不需要添加,删除元素的查找操作。动态查找:数据集合在查找的过程中需要添加或删除元素。 就表的有序性而言,二叉排序树无须移动结点,只需修改指针即可完成插入和删除操作,且其平均的执行时间均为O(lgn),因此更有效。二分查找...
分类:
其他好文 时间:
2014-09-16 00:09:19
阅读次数:
177
多看几遍索引操作将原始数据引入可被高效查找的对照表中,以便能够对这些内容进行快速搜索。这里的对照表的结构是什么样的?是二叉排序树还是红黑树?索引是一个精心设计的数据结构。
分类:
其他好文 时间:
2014-09-15 14:16:48
阅读次数:
122
#include
using namespace std;
// 有序二叉树(二叉搜索树)
class Tree {
public:
// 构造过程中初始化为空树
Tree (void) : m_root (NULL), m_size (0) {}
// 析构过程中销毁剩余节点
~Tree (void) {
clear ();
}
// 插入数据
void insert (in...
分类:
其他好文 时间:
2014-09-13 22:52:02
阅读次数:
207
Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来...
分类:
其他好文 时间:
2014-09-13 10:36:25
阅读次数:
242
题目连接:点击打开链接
在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3).任意一个节点的右子树(如果存在的话)的关键值大于该节点的关键值。现给定一组数据,请你对这组数据按给定顺序建立一棵排序二叉树,并输出其中序遍历的结果。
输入
...
分类:
其他好文 时间:
2014-09-11 23:52:22
阅读次数:
184
这是利用treap写的二叉排序树,只要理解其中旋转能够改变树的左右子树平衡度,即高度之差,差不多就能掌握treap树的要领了。相对于其他高级BST,treap树实现应该算最简单了,利用的是随机树产生的理论的二叉排序树时间复杂度为O(nlgn)来实现,具体证明 算法导论 中有。推荐NOCOW中的讲解,...
分类:
其他好文 时间:
2014-09-11 20:52:12
阅读次数:
316
参考:http://student.zjzk.cn/course_ware/data_structure/web/chazhao/chazhao9.3.1.1.htm 1 #include "stdafx.h" 2 #include 3 4 typedef int InfoType; ...
分类:
其他好文 时间:
2014-09-11 11:03:41
阅读次数:
169
平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。
平衡因子(bf):结点的左子树的深度减去右子树的深度,那么显然-1
很显然,平衡二叉树是在二叉排序树(BST)上引入的,就是为了解决二叉排序树的不平衡性导致时间复杂度大大下降,那么AVL就保持住了(BST)的最好时间复杂度O(logn...
分类:
其他好文 时间:
2014-09-06 09:46:03
阅读次数:
332
Hash表 Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录.....
分类:
其他好文 时间:
2014-08-29 13:01:07
阅读次数:
208
UVA 1264 - Binary Search Tree
题目链接
题意:给定一个序列,插入二叉排序树,问有多少中序列插入后和这个树是相同的(包括原序列)
思路:先建树,然后dfs一遍,对于一个子树而言,只要保证左边和右边顺序对就可以了,所以种数为C(左右结点总数,左结点),然后根据乘法原理乘上左右子树的情况即可
代码:
#include
#include
t...
分类:
其他好文 时间:
2014-08-25 11:51:14
阅读次数:
204