一、基本概念 AVL树既是平衡二叉树。AVL树的定义首先要求该树是二叉查找树(满足排序规则),并在此基础上增加了每个节点的平衡因子的定义,一个节点的平衡因子是该节点的左子树树高减去右子树树高的值。 ===================================================...
分类:
其他好文 时间:
2015-06-03 23:05:21
阅读次数:
200
有序链表0->1->2->3->4->5转换为一个二叉排序树。我们在此创建一个平衡二叉排序树1.先找链表到中间的节点2.中间节点的val创建一个新的树节点TreeNode3.将链表断裂为2部分4.递归创建左子树和右子树#include#includeusing namespace std;struc...
分类:
编程语言 时间:
2015-06-03 21:21:46
阅读次数:
131
动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树 (Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂...
分类:
其他好文 时间:
2015-06-02 19:44:10
阅读次数:
249
这篇博客主要讲解B树及其插入删除操作,并给出操作的流程图以达到清晰易懂的目的,尽管标题是从二叉排序树到平衡二叉树再到红黑树系列3,没有B树二字,但他们都是动态查找树,所以我将他们归为一个系列。
B树是为磁盘或其他直接存取的辅助存储设备而设计的一种平衡搜索树。它以一种很自然的方式推广了二叉搜索树,B树与红黑树的不同之处在于B树结点的孩子不限于最多为2,而是可以有数个到数千个不定。因为结点的分支更多...
分类:
编程语言 时间:
2015-05-29 20:23:55
阅读次数:
183
树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的...
分类:
编程语言 时间:
2015-05-29 17:58:36
阅读次数:
121
一般二叉树的查找是通过遍历整棵二叉树实现,效率较低。二叉查找树是一种特殊的二叉树,可以提高查找的效率。二叉查找树又称为二叉排序树或二叉搜索树。 二叉查找树的定义 二叉排序树(Binary Search Tree)又称二叉排序树(Binary Sort Tree),或者是一颗空二叉树,或者...
分类:
编程语言 时间:
2015-05-28 23:09:56
阅读次数:
204
红黑树红黑树是一种二叉查找树,但在每个结点上增加一个存储位存储结点的颜色,可以是red或black。通过对任意一条从根到叶的路径上结点颜色的限制,红黑树确保没有任何一条路径比其他路径长出两倍,因而是接近平衡的。每个结点包含5个域,color,key,left,right,p满足以下红黑性质:1、每个...
分类:
编程语言 时间:
2015-05-27 18:49:13
阅读次数:
177
伸展树
伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它由Daniel Sleator和Robert Tarjan创造,后者对其进行了改进。
假设想要对一个二叉查找树执行一系列的查找操作。为了使整个查找时间更小,被查频率高的那些条目就应当经常处于靠近树根的位置。于是想到设计一个简单方法,在每次查找之后对树进行重构,把被查找的条目搬移到离树根近一些的地方。splaytre...
分类:
其他好文 时间:
2015-05-27 01:04:18
阅读次数:
183
二叉查找树性质设x是二叉查找树中的一个结点,如果y是x的左子树中的一个结点,则k[y]=k[x]1 //中序遍历算法,输出二叉查找树T中的全部元素2 INORDER-TREE-WALK(x)3 if x!=nil4 then INORDER-TREE-WALK(left[x])5 ...
分类:
编程语言 时间:
2015-05-26 22:59:04
阅读次数:
114
题目:给出两棵二叉查找树,有序输出所有元素,时间复杂度O(n),空间复杂度O(h),h为树的高度此题就是把两棵二叉查找树的中序遍历过程结合在一起。structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode(intx):val(x),left...
分类:
其他好文 时间:
2015-05-25 20:02:48
阅读次数:
100