普林斯顿Algorithms(上)学习笔记(5)


第五周介绍平衡查找树和BST的几何应用。

Week5

Balanced Search Tree

2-3 Tree

定义
2-3树也是一种数据结构,能够维护树的平衡。其内部节点(存在子节点的节点)要么有2个孩子和1个数据元素;要么有3个孩子和2个数据元素,叶子节点没有孩子,并且有1或2个数据元素。

在维基百科中具体定义如下:

在这里插入图片描述
如果一个内部节点拥有一个数据元素、两个子节点,则此节点为2节点;
如果一个内部节点拥有两个数据元素、三个子节点,则此节点为3节点;
当且仅当一下叙述中有一条成立时,T为2-3树:

T为空。即T不包含任何节点;
T为拥有数据元素a的2节点。若T的左孩子为L,右孩子为R,则:

L和R是等高的非空2-3树;
a大于L中的所有数据元素,同时,a小于等于R中的所有数据元素;

T为拥有数据元素a和b的3节点,其中a<b。若T的左孩子为L、中间孩子为M、右孩子为R,则

L、M和R是等高的非空2-3树;
a大于L中的所有数据元素,并且小于等于M中的所有数据元素‘;同时
b大于M中的所有数据元素,并且小于等于R中的所有数据元素。

操作

  1. 2-3树的查找:
    在这里插入图片描述

  2. 2-3树插入元素:

    往一个2-node节点插入:将新的元素放到此2-node节点里,使其变为3-node节点即可。
    在这里插入图片描述

    往一个3-node节点插入:

    只包含一个3-node节点:暂时将3-node变为一个4-node节点,将此4-node节点的中间元素提升,左边节点作为其左节点,右边元素节点作为其右节点。插入完成,树的高度由0变为1
    在这里插入图片描述

    节点是3-node,父节点是2-node:与第一种情况一样,将节点的中间元素提升到父节点的2-node节点中,使得父节点成为一个3-node节点,然后将左右节点分别挂在这个3-node节点的恰当位置
    在这里插入图片描述

    节点是3-node,父节点也是3-node:当节点拆分,中间元素提升至父节点,但此时父节点是一个3-node,插入后,父节点也要进行分裂,继续将中间元素提至父节点的父节点,一直重复此操作,直至遇到一个父节点是2-node节点,然后将其变为3-node,不需继续拆分。当根节点到字节点都是3-node的时候,在最后一步要进行根节点的分量,此时树的高度加1.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值