이진 탐색 트리 x의 각 노드가 x.parent 대신 x.successor를 유지한다고 가정 해보십시오. O (h)에서 작동하는 의사 코드를 사용하여 검색, 삽입 및 삭제 알고리즘을 설명하십시오. 여기서 h는 트리의 높이입니다. 지금까지 검색을위한 간단한 이진 검색 트리 알고리즘이 적용됩니다.수정 된 이진 검색 트리에서 검색, 삽입 및 삭제
TREE-SEARCH(x, k)
if x == NIL or k == x.key
return x
if k < x.key
return TREE-SEARCH(x.left, k)
else return TREE-SEARCH(x.right, k)
이 알고리즘은 수정에 영향을받지 않아야하며 O (h) 시간에 명확하게 실행되어야합니다. 그러나 삽입 및 삭제 알고리즘의 경우 수정이이를 수행하는 간단한 방법을 변경합니다. 예를 들어, 다음
TREE-INSERT(T,z)
y = NIL
x = T.root
while x =/= NIL
y = x
if z.key < x.key
x = x.left
else x = x.right
z.p = y
if y == NIL
T.root = z //Tree T was empty
elseif z.key < y.key
y.left = z
else y.right = z
은 분명히 우리가 때문에 이진 검색 트리에 대한 우리의 수정의 z.p 사용할 수 없습니다, T.
일반 이진 검색 트리를 사용하여 삽입하는 알고리즘이다. 부모를 찾는 서브 루틴을 구현하는 것이 제안되었지만 이것이 어떻게 수행되는지는 볼 수 없습니다.
삽입 루틴에 대해서는 차세대가 우리가 따라온 마지막 노드 인 **라고 말하고 싶습니다. – Alkorizm