#ifndef MY_AVLTREE #define MY_AVLTREE #include<iostream> #include<cmath> #define PRINTS(x) std::cout<<x<<std::ends struct AvlNode; typedef AvlNode* Av ...
分类:
其他好文 时间:
2017-09-26 23:32:30
阅读次数:
262
本文为转载文章 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我们讨论过,树的搜索效率与树的深度有关。二叉搜索树的深度可能为n,这种情况下,每次搜索的复杂度为n的量级。AVL树通过动态平衡树的深度,单次搜索的复杂度为log(n) ...
分类:
其他好文 时间:
2017-09-17 19:07:21
阅读次数:
177
花了半天时间学习AVL树,AVL树只要有LL,RR,LR,RL四种旋转操作,动态增加与减少都需要四种操作结合。AVL树比普通二叉树的结构体多了一个高度,用于保证左右子节点高度差小于2。在计算高度的时候,最好自己写一个函数,因为要判断是否为NULL,NULL则表示为0。如果用指针去取高度,为NULL的 ...
分类:
其他好文 时间:
2017-09-14 18:37:56
阅读次数:
171
二叉排序树又称二叉查找树,亦称二叉搜索树。 二叉排序树或者是一颗空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根节点的值; (2)若右子树不空,则右子树所有结点的值均大于或等于它的根结点的值; (3)左、右子树也分别为二叉排序树 平衡二叉树: 又称为AVL树 ...
分类:
编程语言 时间:
2017-09-10 15:52:21
阅读次数:
281
定义及概念 B树 二叉树的深度较大,在查找时会造成I/O读写频繁,查询效率低下,所以引入了多叉树的结构,也就是B树。阶为M的B树具有以下性质: 1、根节点在不为叶子节点的情况下儿子数为 2 ~ M2、除根结点以外的非叶子结点的儿子数为 M/2(向上取整) ~ M3、拥有 K 个孩子的非叶子节点包含 ...
分类:
其他好文 时间:
2017-08-31 18:00:25
阅读次数:
140
2017-08-29 14:35:55 writer:pprp AVL树就是带有平衡条件的二叉查找树。每个节点的左子树和右子树高度相差最多为1的二叉查找树 空树的高度定为-1 对树的修正称为旋转 对内部的来说是双旋,对外部的调整修正是单旋 由于一次旋转总能解决问题,因此编写非递归程序要比编写递归程序 ...
分类:
其他好文 时间:
2017-08-29 21:45:40
阅读次数:
217
1,AVL树又称平衡二叉树,它首先是一颗二叉查找树,但在二叉查找树中,某个结点的左右子树高度之差的绝对值可能会超过1,称之为不平衡。 而在平衡二叉树中,任何结点的左右子树高度之差的绝对值会小于等于 1。 1,AVL树又称平衡二叉树,它首先是一颗二叉查找树,但在二叉查找树中,某个结点的左右子树高度之差 ...
分类:
其他好文 时间:
2017-08-29 14:35:55
阅读次数:
220
AVL 树要在插入和删除结点后保持平衡,旋转操作必不可少。关键是理解什么时候应该左旋、右旋和双旋。在Youtube上看到一位老师的视频对这个概念讲解得非常清楚,再结合算法书和网络的博文,记录如下。 1.1 AVL 的旋转 一棵AVL树是其每个节点的左子树和右子树的高度差最多为1的二叉查找树(空树高度 ...
分类:
其他好文 时间:
2017-08-24 21:24:15
阅读次数:
161
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1412 题意: 思路: 经典dp!!!可惜我想不到!! $dp[i][k]$表示i个结点,最大深度为k的形态数。 它的转移方程就是: j是右子树结点个数,如果除去根结点,是不 ...
分类:
其他好文 时间:
2017-08-18 23:42:26
阅读次数:
203