0
붉은 색 검은 나무를 삽입하는 코드를보고 있습니다. 이 트리에는 "크기"라는 추가 필드가 있으며 노드 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 "검은 색으로, 그것은 여전히 검은 색 NULL 노드 2 개가 있어야하고 우리는 크기를 3으로 설정해야한다고 생각합니까? 내가 잘못?감사합니다.
그게 내가 물어 본 것이기 때문에 리프 노드가 NULL 검정 노드라고 말하지만 트리의 깊이 나 크기를 계산하는 동안 노드로 계산되지는 않습니까? –
예, 사실입니다. 일부 RBT는이 상태를 만족시키기 위해 모든 잎의 자식을 루트로 사용합니다. –
좋습니다, 고마워요 –