CS61B学习日记2
今天学习了B树和红黑树的概念
总结:
1.在cs61b中B树分为2-3树和2-3-4树:
- 其中主要的关键点是定L的大小。L是指一个节点最多拥有的元素个数。
- B树的不变量(我记作为限制):
2.1) 每个叶子结点到根的路径数相同。
2.2) 每个包含元素个数为k的非叶子结点,其必有链接k+1个叶子结点
2.本课程中将的红黑树称为左倾红黑树(LLRBT:Left-Leaning Red Black Tree)。
其思想是利用旋转方法使LLRBT能够转变为BST,并且每条左红链接能够和一个2-3数进行对应。
2.1 限制:
1.在2-3树的基础之上
2 每个新插入的节点都使用红链接线。
LLRBT的高度不超过(对应2-3树的树高X2+1)
2.2 旋转思想:
1)旋转:
1.1)左上旋:将旋转点作为右子树的左孩子(其中右子树的原本的左孩子作为旋转点的右孩子)
1.2)右下旋:将旋转点作为左子树的右孩子(其中左子树的原本的右孩子作为旋转点的左孩子)
2.3 新插入点安装BST插入后树的形状需要进行调整的情况:
2.1)插入点使树变为右倾:此时利用左上旋将其转变为左倾
2.2)插入点连续左倾:此时利用右旋将其连续左倾节点变为同兄弟节点
2.3)颜色反转:也就是接2.2情况进行调整树后,因为在LLRBT中没有右红链接线,我们将把子链接的红链接线变为黑链接线,而父结点的与爷结点的黑链接线转变为左红链接线
不过需要注意的是,在红黑树中新插入点需要进行转换的情况会有很多。需要根据情况不断调整树的形状为BST。
最主要的是,经过这些树的不断变形,其结点仍符合BST的节点规则(左孩子值<父结点值<右孩子值)。
复杂度的话为logN。
ps:小感叹一下前辈们巧妙的思想。
本文作者:duuuuu17
本文链接:https://www.cnblogs.com/duuuuu17/p/17687288.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步