二叉树
二叉树的产生:方便在一堆数中快速找到目标数。
二叉树的查找规律:以1号树为例,查100。从树根50起,比50大就到以75为根的右子树中找;比75大,同理;与右子树根100比对相等,结束。总计遍历 3 个节点。注意观察1号树有3层节点,因此在1号树中查找任意数字最多只需遍历3个节点;同理 2号树 最多遍历4个节点。与1号树相比遍历数堆查找则最多 7 个,平均 3.5 个节点。
二叉树的树形:不同的树形和数字插入二叉树的顺序有关。1号树的可能插入顺序如图解。同理 2号树 的可能插入顺序为:75,100,25,30,60,10 。
平衡二叉树
平衡二叉树的产生:同一数堆的形状不同的二叉树中,不是所有二叉树都是左右平衡的,极端情况是不存在左/右子树。此类形状的二叉树是不平衡的,与数组无异。
平衡二叉树:每个节点的左右子树高度较为平衡。
红黑树的规则
红黑树的产生:1978年由"平衡二叉B树"演变而来,是一个查找,插入,删除效率都为 的平衡二叉树。
红黑树的规则:
4号树 与 3号树 镜像对称,所以也找不到建树方案;1号树 左右完全平衡一定满足上述 5 个条件,下面给出 2号树 符合上述 5 个规则的建树方案。
红黑树化
红黑树化的产生:由于插入顺序导致树的不平衡,因此只需要在插入节点和删除节点时,采取一些措施保证最终的树形满足红黑树的规则。
红黑树化的规则:这里参考了网路上一篇图文并茂的博文来讲解。
插入操作
插入的影响: