File tree Expand file tree Collapse file tree 1 file changed +24
-12
lines changed
src/data-structures/tree/binary-search-tree Expand file tree Collapse file tree 1 file changed +24
-12
lines changed Original file line number Diff line number Diff line change @@ -103,19 +103,31 @@ remove(value)
103103 else
104104 parent.right ← nodeToRemove.right
105105 end if
106- else if nodeToRemove.left = ø and nodeToRemove.right = ø
107- if nodeToRemove.value < parent.value
108- parent.left ← nodeToRemove.left
109- else
110- parent.right ← nodeToRemove.left
111- end if
106+ else if nodeToRemove.left != ø and nodeToRemove.right != ø
107+ next ← nodeToRemove.right
108+ while next.left != ø
109+ next ← next.left
110+ end while
111+ if next != nodeToRemove.right
112+ remove(next.value)
113+ nodeToRemove.value ← next.value
114+ else
115+ nodeToRemove.value ← next.value
116+ nodeToRemove.right ← nodeToRemove.right.right
117+ end if
112118 else
113- largestValue ← nodeToRemove.left
114- while largestValue.right = ø
115- largestValue ← largestValue.right
116- end while
117- findParent(largestValue.value).right ← ø
118- nodeToRemove.value ← largestValue.value
119+ if nodeToRemove.left = ø
120+ next ← nodeToRemove.right
121+ else
122+ next ← nodeToRemove.left
123+ end if
124+ if root = nodeToRemove
125+ root = next
126+ else if parent.left = nodeToRemove
127+ parent.left = next
128+ else if parent.right = nodeToRemove
129+ parent.right = next
130+ end if
119131 end if
120132 count ← count - 1
121133 return true
You can’t perform that action at this time.
0 commit comments