平衡二叉树和红黑树

目录

一、平衡二叉树

1. 二叉树

2. 平衡二叉树

二、红黑树

1. 2-3-4树

(1)简介        

(2)三种节点的示意图

(3)构建2-3-4树

2. 红黑树

(1)红黑树的特征

(2)从2-3-4树到红黑树

(3)通过2-3-4树构建红黑树


一、平衡二叉树

1. 二叉树

        讲述平衡二叉树之前,先说一说二叉树。在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。

        二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;深度为k的二叉树至多有2^(k) -1个结点;对任何一棵二叉树T,如果其终端结点数(即叶子结点数)为n0,度为2的结点数为n2,则n0 = n2 + 1。

2. 平衡二叉树

        平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

        这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多。

        平衡二叉树在插入的情况下会出现失衡的状态,一旦出现这种情况,就通过节点的旋转来保护树的平衡性,旋转类型分为四种:LL型、LR型、RR型和RL型。

         在操作的时候,我们要先找到离造成不平衡节点最近的节点,这有利于我们旋转,旋转方式如下图所示。

        但是如果节点过多的话,操作起来会很麻烦,故引入了红黑树。

二、红黑树

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值