一.什么是平衡二叉树? 平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树.这个方案很好的解决了二叉排序树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN). 我们将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF(Balance Factor),那么平衡二叉树上所有结点的平衡因子只可能是-1.0和1…
一.什么是二叉树? 1.1 定义 二叉树,是度为二的树,二叉树的每一个节点最多只有二个子节点,且两个子节点有序. 1.2 二叉树的重要特性 (1)二叉树的第 i 层上节点数最多为 2n-1: (2)高度为 k 的二叉树中,最多有 2k-1个节点: (3)在任意一棵二叉树中,如果终端节点的度为 n,度为 2 的节点数为 m,则 n=m+1: (4)二叉树的子树有左右之分,顺序不能颠倒. 1.3 特殊二叉树 斜树:所有的结点都只有左子树的二叉树叫左斜树,有结点都是只有右子树的二叉树叫右斜树. 满二叉…
AVL树概念 前面学习二叉查找树和二叉树的各种遍历,但是其查找效率不稳定(斜树),而二叉平衡树的用途更多.查找相比稳定很多.(欢迎关注数据结构专栏) AVL树是带有平衡条件的二叉查找树.这个平衡条件必须要容易保持.而且要保证它的深度是O(logN). AVL的条件是左右树的高度差(平衡因子)不大于1:并且它的每个子树也都是平衡二叉树. 对于平衡二叉树的最小个数,n0=0;n1=1;nk=n(k-1)+n(k-2)+1;(求法可以类比斐波那契!) 难点:AVL是一颗二叉排序树,用什么样的规则或者规…
目录 顺序查找 二分查找 二叉平衡树 B树 红黑树 B+树 参考文档 顺序查找 给你一组数,最自然的效率最低的查找算法是顺序查找--从头到尾挨个挨个遍历查找,它的时间复杂度为O(n). 二分查找 而另一个大家都知道的,效率很高经典查找算法--二分查找法,它的时间复杂度是O(logn).但二分法的数据结构是数组,这样才能通过公式(low+height)/2=middle计算出中间位置的元素.而数组的修改效率很低,最坏的情况下,插入一个元素,要移动n个元素. 二叉平衡树 通过模拟二分查找法的插入.查…
package Demo; public class AVLtree { private Node root; //首先定义根节点 private static class Node{ //定义Node指针参数 private int key; //节点 private int balance; //平衡值 private int height; //树的高度 private Node left; //左节点 private Node right; //右节点 private Node pare…
http://acm.hdu.edu.cn/showproblem.php?pid=1166 题意:第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N<=50000),表示敌人有N个工兵营地,接下来有N个正整数,第i个正整数ai代表第i个工兵营地里开始时有ai个人(1<=ai<=50). 接下来每行有一条命令,命令有4种形式: (1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) (2)Sub i j ,i和j为正整数,表示第i个营地减少j个人…
目录 1.二分法引言 2.二叉搜索树定义 3.二叉搜索树的CRUD 4.二叉搜索树的两种极端情况 5.二叉搜索树总结 前言 在[算法04]树与二叉树中,已经介绍过了关于树的一些基本概念以及二叉树的前中后序遍历,而这篇文章将是在二叉树的基础上来展开讲解的二叉搜索树,也就是说二叉搜索树建立在树的基础之上.至于博主为何要花一整篇文章来讲这个二叉搜索树呢?原因很简单,红-黑树是基于二叉搜索树的,如果对二叉搜索树不了解,那还谈何红-黑树?红-黑树的重要性我想各位没吃过佩奇肉也肯定看过宜春跑....是的,j…
先来了解一些基本概念: 1)什么是二叉平衡树? 之前我们了解过二叉查找树,我们说通常来讲, 对于一棵有n个节点的二叉查找树,查询一个节点的时间复杂度为log以2为底的N的对数. 通常来讲是这样的, 但是...有例外 比如,我们向一棵树中输入预先排好序的数据, 如1,2,3,4,5,...10000, 可以想象到,将形成一棵斜树那么查找10000就要经过9999次比较才能得到,这显然不是我们期望看到的 所以,我们希望引入一个约束条件----任何节点的深度不得过深. 这就是二叉平衡树 二叉平衡树是二…
二叉平衡树(AVL):   这个数据结构我在三月份学数据结构结构的时候遇到过.但当时没调通.也就没写下来.前几天要用的时候给调好了!详细AVL是什么,我就不介绍了,维基百科都有.  后面两月又要忙了.和同学组队去比赛,预计博客这边也不常写了.等这段时间过了再继续更新!  这是我第一次画电路图(原理图)晒晒,事实上我对电子非常感兴趣的.看着网上人家做的电子作品.就想自己也做做.兴奋的想试试.呵呵,以后我做电子小作品了也把他放到博客,开源和大家一起分享.DIY的乐趣.       第一次正儿八经会电…
输入一颗二叉树,判断这棵树是否为二叉平衡树.首先来看一下二叉平衡树的概念:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树.因此判断一颗二叉平衡树的关键在于求出左右子树的高度差,而二叉树的高度又是怎么定义的呢?二叉树的高度指的是从根节点到叶子节点所有路径上包含节点个数的最大值.所以我们可以得出,父亲节点的高度与左右子树高度的关系为:父亲节点的高度=max(左子树高度,右子树高度)+1,同时我们知道,叶子节点的高度值为1(或则0,这里定义1或者0对判断结…