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:小感叹一下前辈们巧妙的思想。
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号