๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

11-3๊ฐ•. ์ด์ง„๊ฒ€์ƒ‰ํŠธ๋ฆฌ (Binary Search Tree)

by devshin.kr 2020. 11. 15.
728x90

์ง€๋‚œ ๊ฐ•์˜ ๊ณต๋ถ€ ๋‚ด์šฉ...

  • ์ด์ง„๊ฒ€์ƒ‰ํŠธ๋ฆฌ์˜ ํƒ์ƒ‰, ์‚ฝ์ž…

 

 

  • ์ด์ง„๊ฒ€์ƒ‰ํŠธ๋ฆฌ/์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ์˜ ์‚ญ์ œ

Case 1 : ์ž์‹๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ

   -> ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ๊ทธ๋ƒฅ ์‚ญ์ œํ•œ๋‹ค.

 

Case 2 : ์ž์‹๋…ธ๋“œ๊ฐ€ 1๊ฐœ์ธ ๊ฒฝ์šฐ

   -> ์ž์‹ ์˜ ์ž์‹๋…ธ๋“œ๋ฅผ ์›๋ž˜ ์ž์‹ ์˜ ์œ„์น˜๋กœ ๋ณด๋‚ธ๋‹ค.

 

Case 3 : ์ž์‹๋…ธ๋“œ๊ฐ€ 2๊ฐœ์ธ ๊ฒฝ์šฐ

   -> ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ž๋ฆฌ๋Š” ๊ทธ๋Œ€๋กœ ๋‘๊ณ , ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋…ธ๋“œ์™€ ๊ฐ€์ž์•„ ๊ฐ€๊นŒ์šด ๊ฐ’์ธ ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ํ•ด๋‹น ์ž๋ฆฌ๋กœ ๊ฐ€์ ธ ์˜จ๋‹ค.

   ๊ทธ ๋‹ค๋ฅธ ๋…ธ๋“œ๋Š” ์‚ญ์ œํ•˜๋ ค๋Š” ๋…ธ๋“œ์˜ successor์ด๋‹ค. ์‚ญ์ œํ•˜๋ ค๋Š” ๋…ธ๋“œ์˜ successor๋Š” ์ตœ๋Œ€ 1๊ฐœ์˜ ์ž์‹๋…ธ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค.

 

์ด์ง„๊ฒ€์ƒ‰ํŠธ๋ฆฌ ์‚ญ์ œ์˜ ์˜ˆ. (a) Case1, (b) Case2, (c) Case3

 

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)

๋Œ“๊ธ€