二叉树、红黑色

参考资料:

https://zhuanlan.zhihu.com/p/27700617 平衡二叉树、B树、B+树、B*树

https://zhuanlan.zhihu.com/p/78249704 一篇漫画告诉你--什么是红黑树?

 

二叉排序树

左子树上的所有节点均小于或等于它的根节点,又子树上的所有节点均大于或等于它的根节点;二叉树方便了查找,他的查找逻辑即与二分查找一致。插入即在查找的基础上进行插入对应位置。

B树(B-tree)

M阶代表一个树节点最多有多少个查找路径,M=M路,当M=2则是2叉树,M=3则是3叉

所有节点关键字是按递增次序排列,并遵循左小右大原则;

关键字数:枝节点的关键字数量大于等于ceil(m/2)-1个且小于等于M-1个(注:ceil()是个朝正无穷方向取整的函数 如ceil(1.1)结果为2);(关键字就是每个节点内的数值数量,当不满足是需要进行节点合并)

所有叶子节点均在同一层、叶子节点除了包含了关键字和关键字记录的指针外也有指向其子节点的指针只不过其指针地址都为null对应下图最后一层节点的空格子;

preview

B树的插入:当当前节点满足对应的M阶,即底下的空格子个数=M后,如果插入新的数据就需要进行拆分,拆分逻辑是将中间数据提取到父节点上,左边单独构建一个节点,右边单独构建一个节点

B树的删除:当关键字树不满足时先从子节点取,子节点没有符合条件时就向向父节点取,取中间值往父节点放;

preview

红黑树

节点是红色或者黑色

根节点是黑色

每个叶子节点都是黑色的空节点

每个红色节点的两个子节点都是黑色

从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点

preview

红黑树的调整

变色:为了重新符合红黑树的规则,尝试把红色节点变为黑色,或者把黑色节点变为红色。

左旋转:逆时针旋转红黑树的两个节点,使得父节点被自己的右孩子取代,而自己成为自己的左孩子。说起来很怪异,大家看下图:

preview

右旋转:顺时针旋转红黑树的两个节点,使得父节点被自己的左孩子取代,而自己成为自己的右孩子。大家看下图:

preview

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值