我正在查看插入增强的红黑树的代码。这棵树有一个称为“大小”的附加字段,它保持以节点 x 为根的子树的大小。这是插入新节点的伪代码:
AugmentedRBT_Insert(T,x){
BST_Insert(T,x); //insert as if it is a normal BST
x[color]=red; //insert as a red node
size[x]=1;
tmp=parent[x];
while(tmp!=NULL){ //start from the node x and follow the path to root
size[tmp]=size[tmp]+1; //update the size of each node
tmp=parent[tmp];
}
}
忘记修复着色和旋转,它们将在另一个函数中完成。我的问题是,为什么我们将新添加的节点“x”的大小设置为1?我知道它不会有任何子树,所以它的大小必须为1,但是RBT的要求之一是每个红色节点都有两个黑色孩子,实际上每个叶子节点都是NULL,即使我们插入节点“x “作为黑色,它仍然应该有 2 个黑色 NULL 节点,我认为我们必须将其大小设置为 3?我错了吗?
谢谢。