2-3树学习笔记

本人今天学习了一种数据结构,那,就是2-3树。

2-3树,一种平衡查找树。首先,要知道什么是2-3树,就得了解二叉排序树。

定义:

二叉排序树或者是一棵空树,或者是具有下列性质的二叉树

(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;

(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;

(3)左、右子树也分别为二叉排序树;

了解了吗?

同理,如果一个节点它有两个值,那么是不是就有3个子节点?

2-3树就是一颗这样的树,同时,它的所有叶子节点的深度是一样的,so,这棵树就可以始终保持log(n)的查找与插入速度。

来个官方定义:

2-3树是最简单的B-树(或-树)结构,其每个非叶节点都有两个或三个子女,而且所有叶都在统一层上。2-3树不是二叉树,其节点可拥有3个孩子。不过,2-3树与满二叉树相似。若某棵2-3树不包含3-节点,则看上去像满二叉树,其所有内部节点都可有两个孩子,所有的叶子都在同一级别。另一方面,2-3树的一个内部节点确实有3个孩子,故比相同高度的满二叉树的节点更多。高为h的2-3树包含的节点数大于等于高度为h的满二叉树的节点数,即至少有2^h-1个节点。换一个角度分析,包含n的节点的2-3树的高度不大于[log2(n+1)](即包含n个节点的二叉树的最小高度)。 [1] 

那么,了解了2-3树是个啥,那么怎么建一颗2-3树呢?(B树是个什么玩意我们下回再讲)。

首先,2-3树开始就是一颗空树,之后,所有的数字一个个的插入,插入方法与二叉排序树类似,唯一不同的是,到了叶子节点就要停止,直接给叶子节点加个值。

接下来,就是个很关键的地方了!!!如果一个叶子节点有3个值,那么就取3个值中中间的那个值,往放到父亲节点里,然后再对叶子节点做出相应的修改。这里由于父亲节点新加了一个值,子节点也多了一个,所以原来的节点也要把较大的那一边移过来,这样一直做到根节点。到了根节点,就直接叶子节点的深度加深一层,再做相同变化。

最后2-3树就建完了!!剩下的,就可以开始乱搞啦!

什么?!不知道怎么乱搞??那就去好好学习一下B树与二叉排序树吧!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值