์ง๋ ๊ฐ์ ๊ณต๋ถ ๋ด์ฉ...
- ์ด์ง๊ฒ์ํธ๋ฆฌ์ ํ์, ์ฝ์
- ์ด์ง๊ฒ์ํธ๋ฆฌ/์ด์งํ์ํธ๋ฆฌ์ ์ญ์
Case 1 : ์์๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ
-> ํด๋น ๋ ธ๋๋ฅผ ๊ทธ๋ฅ ์ญ์ ํ๋ค.
Case 2 : ์์๋ ธ๋๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ
-> ์์ ์ ์์๋ ธ๋๋ฅผ ์๋ ์์ ์ ์์น๋ก ๋ณด๋ธ๋ค.
Case 3 : ์์๋ ธ๋๊ฐ 2๊ฐ์ธ ๊ฒฝ์ฐ
-> ํด๋น ๋ ธ๋์ ์๋ฆฌ๋ ๊ทธ๋๋ก ๋๊ณ , ๋ฐ์ดํฐ๋ง ์ญ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ๋ ธ๋์ ๊ฐ์์ ๊ฐ๊น์ด ๊ฐ์ธ ๋ค๋ฅธ ๋ ธ๋๋ฅผ ํด๋น ์๋ฆฌ๋ก ๊ฐ์ ธ ์จ๋ค.
๊ทธ ๋ค๋ฅธ ๋ ธ๋๋ ์ญ์ ํ๋ ค๋ ๋ ธ๋์ successor์ด๋ค. ์ญ์ ํ๋ ค๋ ๋ ธ๋์ successor๋ ์ต๋ 1๊ฐ์ ์์๋ ธ๋๋ฅผ ๊ฐ์ง๋ค.
TREE-DELETE(T, z) // z : ์ญ์ ํ ๋
ธ๋
{
if left[z] == null or right[z] == null
then y <- z
else y <- TREE-SUCCESSOR(z)
// ๋
ธ๋ y๋ฅผ ์ญ์ ํ๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ค.
if left[y] != null
then x <- left[y]
else x <- right[y]
if x != null
then p[x] <- p[y]
if p[y] == null
then root[T] <- x
else if y == left[p[y]]
then left[p[y]] <- x
else right[p[y]] <- x
// ๊ทธ๋ฐ๋ฐ y๊ฐ z๊ฐ ์๋๋ผ๋ฉด, (Case3)
if y != z
then key[z] <- key[y]
copy y's satellite data into z
return y
}
์๊ฐ๋ณต์ก๋ : O(h)
- Binary Search Tree
Search, Insert, Delete์ ์๊ฐ๋ณต์ก๋๋ ๋ชจ๋ O(h)์ด๋ค.
๋ ๋-๋ธ๋ ํธ๋ฆฌ๋ ์ด์ง๊ฒ์ํธ๋ฆฌ์ ํ ํํ์ด๋ค.
(๊ฐ์ ์ฐธ๊ณ : www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B0%95%EC%A2%8C/lecture/4095?tab=curriculum)
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
12-2๊ฐ. ๋ ๋๋ธ๋ํธ๋ฆฌ (3) (0) | 2020.11.22 |
---|---|
12-1๊ฐ. ๋ ๋๋ธ๋ํธ๋ฆฌ(1) (0) | 2020.11.17 |
์ 11-1๊ฐ. ์ด์ง๊ฒ์ํธ๋ฆฌ(Binary Search Tree) (0) | 2020.11.10 |
์ 10๊ฐ ํธ๋ฆฌ์ ์ด์งํธ๋ฆฌ (0) | 2020.11.08 |
9๊ฐ. Java์์์ ์ ๋ ฌ (0) | 2020.11.05 |
๋๊ธ