File tree 1 file changed +24
-12
lines changed
src/data-structures/tree/binary-search-tree
1 file changed +24
-12
lines changed Original file line number Diff line number Diff line change @@ -103,19 +103,31 @@ remove(value)
103
103
else
104
104
parent.right ← nodeToRemove.right
105
105
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
112
118
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
119
131
end if
120
132
count ← count - 1
121
133
return true
You can’t perform that action at this time.
0 commit comments