目录
?新增的时候不需要加=号,删除的时候需要。为了解决以上的例子。
昨天做了很多伪递归的演示,遂我们知道,这里return回来的东西就是doPut()这东西的返回值,这个return回来的东西要和树建立连接,因为是在node的左边进行查找,那自自然就是连接node的左手。?
我们什么时候考虑null值,就是发现,有左孩子却没有右孩子的时候,要把另外一个兄弟也加进来。?
小妙招:
如果叶子节点,就是最下面的这个点如果是黑色的,一定要成对出现,如果是红色的,那一定是对的。?
parent.isLeftChild:父亲是不是爷爷的左孩子。?
?
准备工作:
李代桃僵方法:不改变其他东西,只改变5和6的值。这样子可以简化代码。
删除的是两个孩子
删除的是没有孩子或者一个孩子,并且删除的是根节点
删除的是没有孩子,且不是根节点的。
那就让它的父母指向null,然后设置它自己的新父母为null,有利于垃圾回收。这说明没有人引用它了,他就会自动被清理掉。
?删除的是有一个孩子的,且不是根节点的。
倒数第二行的代码,几个连等null的代码的意思是:我让要删除的元素和所有人脱掉关系,因此有助于垃圾回收。
现在要考虑平衡的问题了:
删黑色要考虑平衡问题,删红色不需要?
?
?
后面的再次递归,是将case3变成case4
几个例子
?
4有两个孩子,也就是度为2?
关键字数就是key,可以有多个。从孩子数推导到关键字数?
怎么去看红色框框?
如图举例子,如果要查找的是18,keys【3】(20)>18,说明在第二行
如果要查找的是30,keys【5】(30)已然超过了第一行,说明在第二行
如果是非叶子的情况,则调用孩子来查找,因为比如说那个序号5,第一行是找不到序号5的,但是第二行是有序号5的。?
为什么在B树中,2倍树中节点最小度数-1等于最大key数目
在B树中,2倍树中节点的最小度数-1等于最大key数目是因为B树的定义和性质决定的。
B树是一种多路搜索树,它的每个节点可以包含多个子节点和关键字。在B树中,每个节点的关键字数量要满足一定的条件,即最小度数-1到2倍最小度数-1之间。同时,每个节点的子节点数量比关键字数量多1。
当节点的最小度数为t时,根据B树的性质,每个节点至少包含t-1个关键字和最多2t-1个关键字。而2倍树中的节点的最小度数为2t,因此最小度数-1就等于t-1,最大key数目就等于2t-1。
因此,在B树中,2倍树中节点的最小度数-1等于最大key数目是由B树的定义和性质决定的。
最小度数是啥
在B树中,最小度数是指一个节点中包含的最少子节点数。在B树中,每个节点都包含一个关键字和对应的子节点,最小度数规定了节点中子节点的最少数量。对于一个最小度数为t的B树,每个非根节点必须至少包含t个子节点,而根节点至少包含2个子节点。
root就是一个普通的节点?
再举一个例子:
boolean leaf = true;right.leaf = left.leaf;什么意思?
首先,"boolean leaf = true;" 是一个声明语句,它创建了一个名为leaf的布尔变量,并将其赋值为true。这表示leaf变量是一个布尔类型的变量,它的值为true,即表示为叶子节点。
接着是"right.leaf = left.leaf;" 这是一个赋值语句,它将right节点的leaf属性设置为和left节点的leaf属性相同。这意味着right节点的leaf属性将被设置为和left节点相同的布尔值。这可能是在处理树的数据结构时,用来设置节点的属性,以便在树的遍历或搜索过程中进行判断和处理。
index:在那行,你是第几个。
?
第二种情况:根节点
两种测试方式:
1.debug
2.