查找算法之平衡查找树

2-3查找树是一种保证运行时间为对数级别的平衡二叉查找树。查找过程中,根据键与节点键的比较进行递归搜索。插入时,通过特殊操作保持树的平衡,如向2-节点、3-节点插入,以及处理父节点为2-节点或3-节点的情况。这种树结构避免了完全不平衡导致的线性查找,确保了高效的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面介绍的算法在最坏的情况下还是很糟糕。这次会介绍一种二分查找树并能保证无论如何构造它,他的运行时间都是对数级别的。理想情况下我们希望能够保持二分查找树的平衡性。但是,在动态插入中保证树的完美平衡的代价太高了。

2-3查找树

我们将一棵标准的二叉查找树中的节点成为2-节点(含有一个键和两条链接),现在我们引入3-节点,它含有两个键和三条链接。
这里写图片描述

查找

要判断一个键是否在树中,我们先将它和根节点中的键比较。如果它和其中任意一个相等,查找命中;否则我们就根据比较的结果找到指向相应区间的链接,并在其指向的子树中递归的递归查找。如果这个是空链接,查找未命中。
这里写图片描述

插入

树的平衡:
任何节点的左子树和右子树之间的高度差不能超过1。

这里写图片描述

上图中(a)是平衡的,(b)是不平衡的,很显然,一个完全不平衡的树,在做查找时,它就是线性级别的性能,而平衡的二叉树,同样的数据量,但有效利用了平衡性,它的查找性能则能降到对数级别。

而动态平衡要求的是要在插入是,时刻保持树的平衡性。

分为几种情况:

向2-节点中插入新键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值