前言 通过之前对二叉查找树的讨论,我们知道在给定节点数目的情况下,二叉树的高度越低,查找所用时间也就越短. 在讨论红黑树的时候,我们说过红黑树并非完全"平衡"的二叉树,只是近似"平衡".那么这个平衡到底指的是什么呢?有没有完全"平衡"的二叉树?平衡二叉树 什么样的二叉树能被形容为平衡二叉树呢?...
分类:
其他好文 时间:
2014-12-19 21:54:20
阅读次数:
219
首先上一下单纯的二叉树插入节点的代码,用的是不返回新根节点的方式: 1 void insertNode(BTree *&root,int data) 2 { 3 if (root == nullptr)//当根节点为NULL时,在根节点上插入 4 { 5 root =...
分类:
其他好文 时间:
2014-12-16 23:53:45
阅读次数:
425
1、AVL树: 1)其左子树(TL)与右子树(TR)是AVL树; 2)|HL-HR| 3 #include 4 #include 5 using namespace std; 6 7 typedef struct AVLTree{ 8 int ndata; 9...
分类:
其他好文 时间:
2014-12-05 16:55:27
阅读次数:
279
AVL 旋转」存在的目的是什么? http://www.zhihu.com/question/20390173 AVL平衡二叉树中旋转操作的本质及其实现 http://blog.csdn.net/vesper305/article/details/13614403...
分类:
其他好文 时间:
2014-12-03 12:40:30
阅读次数:
122
摘要本文主要讨论的内容包括:BST的性质以及基本操作分析。作为最基本的数据结构,二叉查找树(后文记为BST)本身不仅易于理解,代码精简,而且通过添加不同的特性,可以实现许多高级的数据结构,例如:添加颜色信息,升级为红黑树;添加高度和平衡信息,升级为AVL树;更改节点数量,成为2-3-4树等更为复杂的...
分类:
其他好文 时间:
2014-11-30 13:52:12
阅读次数:
408
这道题也不是非常的难,弄楚平衡二叉树(AVL)的判断方法就行:1.判断左子树高度与右子树高度之差是否小于12.判断根节点左子树是否满足平衡二叉3.判断根节点右子树是否满足平衡二叉满足以上三个条件才是AVL树 1 /** 2 * Definition for binary tree 3 * str.....
分类:
其他好文 时间:
2014-11-29 17:31:39
阅读次数:
199
平衡二叉树 AVL( 发明者为Adel'son-Vel'skii 和 Landis)是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1。首先我们知道,当插入一个节点,从此插入点到树根节点路径上的所有节点的平衡都可能被打破,如何解决这个问题呢?这里不讲大多数书上提的什么平衡因子,什么最...
分类:
其他好文 时间:
2014-11-24 06:26:20
阅读次数:
165
这几天学习了AVL树(平衡二叉搜索树),遂写一篇总结与大家分享。包括五个部分:
一、AVL树(平衡二叉搜索树)是什么?
二、为什么要用AVL树?
三、AVL树的实现原理
四、完整的实现代码(C++和Java)
五、测试程序分析...
分类:
编程语言 时间:
2014-11-22 23:12:49
阅读次数:
492
平衡二叉树(AVL)是一种特殊的二叉搜索树,他满足两个性质:1. 此树是二叉搜索树2. 任意节点的左右子树高度差的绝对值不超过1这样是为了提高查询的效率,因为一般的二叉搜索树有可能不会是完全二叉树或者接近完全二叉树情况,有的甚至退化成链表,所以平衡二叉树将二叉树平衡一下,使得查询效率满足logn,主...
分类:
其他好文 时间:
2014-11-20 18:38:45
阅读次数:
225