新结点的插入可能会破坏平衡:
将结点的平衡因子定义为:左子树高 - 右子树高
left-heavy说明平衡因子为1,right-heavy说明平衡因子为-1
下面讨论如何对 最小不平衡子树 进行调整 :
(这里为了确保所讨论的最小平衡子树以 A为根,示例中 BL,BR和 AR均为高 H的子树)
左边重就往右旋
右边重则往左旋
插入90,出现RR型不平衡,自下而上找到最小不平衡子树以66为根
针对66的右孩子进行左旋操作
调整结束
插入63,出现RL型不平衡,自下向上找到最小不平衡子树以50为根
则针对50的右孩子的左孩子:66进行左旋+右旋
调整结束
6.006的证明方法如下:
N_h表示构成一棵高度为h的AVL树的最少结点数:
第一种方法根据递推式可以粗略得到h的上限,数量级为O(lgn)
第二种根据斐波那契数列可以得到更精确的近似 max.h 约等于1.440lgn,
总之,记住含有n个结点的AVL树的最大深度为O(lgn)即可,这也意味着平衡二叉树的平均查找长度为O(lgn)
带权路径长度
哈夫曼树并不唯一 :
用一串二进制数表示信息
固定长度 → 可变长
降低了树的 WPL
Q:能否进一步减少编码长度,将A直接用1表示?
A:这会导致接收方解码时出现歧义
(右图树画错了,应该有三层)
原文:https://www.cnblogs.com/potofsalt/p/14880359.html