Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3844e9f

Browse files
RequireSuntrekhleb
authored andcommitted
fix: correct the wrong code of Deletion (trekhleb#263)
1 parent e4ba378 commit 3844e9f

File tree

1 file changed

+24
-12
lines changed
  • src/data-structures/tree/binary-search-tree

1 file changed

+24
-12
lines changed

‎src/data-structures/tree/binary-search-tree/README.md‎

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /