私は、拡張された赤黒木に挿入するコードを見ています。このツリーには「サイズ」と呼ばれる追加のフィールドがあり、ノード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の要件の1つは、すべての赤いノードに2つの黒い子があることです。実際、すべてのリーフノードはNULLであり、ノード「x 「黒として、それでも2つの黒のNULLノードが必要であり、サイズを3に設定する必要があると思いますか?私が間違っている?
ありがとう。