《 常见算法与数据结构》平衡查找树(1)—— 2-3查找树(附动画)

来源:互联网 发布:猫咪视频软件下载 编辑:程序博客网 时间:2024/06/11 11:19

本系列文章主要介绍常用的算法和数据结构的知识,记录的是《Algorithms I/II》课程的内容,采用的是“算法(第4版)”这本红宝书作为学习教材的,语言是java。这本书的名气我不用多说吧?豆瓣评分9.4,我自己也认为是极好的学习算法的书籍。

通过这系列文章,可以加深对数据结构和基本算法的理解(个人认为比学校讲的清晰多了),并加深对java的理解。


2-3树介绍

我们上回说到二叉查找树已经很接近我们的目标了,在很多情况下性能都很不错,但是唯独在删除上不行,一旦删除操作做多了就会失去平衡,那么,这回,我们来说说如何做一个平衡查找树,首先介绍一下2-3查找树

2-3树是一种特殊的二叉树,它允许一个节点中出现2个key。

  • 2节点:1个key,2个孩子

  • 3节点,2个key,3个孩子

your text

它有几个特性:

  1. 符合中序遍历的顺序:左孩小于最左key,中间孩子在左右key之间,右孩子大于最右key

  2. 绝对平衡:从根节点到所有null节点的路径一样长(我们后面会讲如何维护)

2-3树查找

根据它的特性,我们可以很容易知道如何查找,和二叉树的查找差不多,只是多了一个节点。

  • 如果小于左孩子:go left

  • 如果小于右孩子:go mid

  • 如果大于右孩子:go right

  • 如果等于key,返回value

  • 如果为null,返回null

看动画:

your text

2-3树的插入

插入分几种情况:

  • 如果插入的节点是一个2-节点:直接把2节点变成3节点

your text

  • 如果插入的是一个3-节点:

    • 把key加入3-节点变成一个临时4-节点

    • 把4节点的中间key上移到父亲节点

    • 重复操作。

    • 如果到达了root,形成了一个临时4节点,则root节点分裂成3个节点,树高增加1层

your text

your text

看动画:

your text

构造动画

讲了这么多,我们就来看看如何构造一棵2-3树吧。

your text

实现方案

这里就先卖个关子,这里不写代码实现,大家先了解下,后面会用红黑树的方案实现2-3树

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 洋桔梗头垂下来怎么办 洋桔梗花容易折断怎么办 眼睛被火炮炸伤了怎么办 逆水寒包裹满了怎么办 逆水寒包裹里满了怎么办 grim soul包裹满了怎么办 剑三包裹满了怎么办 电脑开机后都是英文怎么办 欠员工工资仲裁老板不到庭怎么办 乔丹拖鞋鞋底硬怎么办 公牛插座电阻烧了怎么办 公牛led灯太刺眼怎么办 公牛插座usb坏了怎么办 墙壁上开关坏了怎么办 刑事二审判决后不服的怎么办 空调外机空间小怎么办 离婚判决生效书丢了怎么办 法院判决离婚对方上诉怎么办 法院判决离婚上诉中级法院怎么办 刑诉中二审发现一审事实错误怎么办 法院判决过了执行期怎么办 刑事犯罪判决后法院未执行怎么办 法院起诉对方不签字怎么办 法院判离婚对方不要签字怎么办 老人不能到法院签字怎么办 法院判决书被告人没签字怎么办? 法院判决离婚一方不签字怎么办 法院判决离婚对方不签字怎么办 法院已判决被告没有钱怎么办 判决还款但是的确没有钱怎么办 强执执行没有钱怎么办 法院判了没钱还怎么办 判决后对方不给钱怎么办 欠钱判决后没钱怎么办 判决了还不给钱怎么办 驾驶证到期本人在监狱服刑怎么办 轻伤过了追诉期怎么办 判决生效书丢了怎么办 高层17楼水压低怎么办 高层六楼水压低怎么办 高层6楼水压低怎么办