有序二叉树
1、有序二叉树
左边节点值小于父节点值,右边的节点值大于父节点值。
2、查询时间复杂度
查询一个数时,时间复杂度在O(lgn)—O(n)之间,不稳定。
3、解决有序二叉树不稳定的问题
使用平衡二叉树。
平衡二叉树
1、平衡二叉树
在有序二叉树的基础上,要求左右子树的高度差的绝对值不能超过1
2、解决高度差绝对值大于1
进行调整,没事走两步。以LL为例,从造成不平衡节点的最近的不平衡节点3节点向造成不平衡的节点走,3–>2(L)–>1(L)
1)LL
2)RR
3)RL
4)LR
3、旋转太复杂,如何解决
构造树时有大量旋转,过于复杂,耗费性能。
解决:红黑树
红黑树(内存最优二叉树)
1、红黑树
既要稳定,又要计算机性能耗费不高,还要一个O(logn)
2-3-4树,只有这几种情况。
2、构建红黑树例子
2节点黑节点,3节点在两个中选其一,4节点中间黑,两侧红
3、红黑树特点
1)节点不是红色就是黑色
2)红黑树当中根节点一定是黑色的
3)叶子节点都是黑色的,没有值
4)根节点到所有叶子节点,所走过黑色节点数目相同
原因:在中间构建2-3-4节点构建的树时层数相同,并且每一个2、3、4节点中都有黑色。
5)没有成对红色出现,一个红色节点的子节点一定是黑色的
原因:红色是子节点,每一个2、3、4节点都是黑色打头
6)最长黑红黑红,最短黑黑黑(由4、5推出)
---->最长路径不超过最短路径二倍。(稳定的基石)