T tree c++实现源代码(一)

这篇博客介绍了T Tree这种数据结构的C++实现,包括其定义、四种旋转操作、插入和删除操作的详细过程。T Tree是一种二叉树,具有平衡因子和特定的节点类型,插入和删除操作中涉及节点平衡的维护。
摘要由CSDN通过智能技术生成

这是关于 T tree 这种数据结构的源代码。
偶然间看到 T tree 这种数据结构,就想自己实现一下,上网搜了搜,关于 这方面的资料并不多。
我也没找到精确的关于 T tree 的定义(或许找到了,但我不确定)。

我参考一些网上的定义,总结如下:

T tree 是一种二叉树;
有左子节点和右子节点的节点称为内部节点;
只有一个子节点的节点称为半叶节点;
没有子节点的节点称为叶节点;
节点中数据的个数小于一个最大值;
内部节点中数据的个数大于等于一个临界值,临界值小于等于最大值;
左子树与右子树的高度差不超过2;

差不多就这些了。

我的思路是这样的:

首先是四种旋转操作,熟悉 avl tree 的话,对这四种旋转操作应该不会陌生吧。
在旋转的过程中,可能会把半叶节点或是叶节点转化为内部节点,如果节点中元素的个数少于临界值,
就需要调整了(在插入操作过程中也会出现 把半叶节点或是叶节点转化为内部节点 的情况,但其中的元素个数不会少于临界值)。
调整的时候:
会先向自己的子节点或父节点借数据,借完之后,如果子节点或是 父节点为空,就将其合并,
合并后,只需调整平衡因子就行了,不必再旋转了;
如果子节点 或是父节点不为空,正常进行旋转操作就可以了。

插入操作:
如果待插入的数据小于该节点中的最小值,尝试在左子树中插入,
如果左子树的为空,且该节点不满,就把带插入数据放在这个节点里面作为最小值ÿ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值