AVL Tree

์–ด๋–ค ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋”๋ผ๋„ ์™ผ์ชฝ์ž์‹์˜ ๊นŠ์ด์™€ ์˜ค๋ฅธ์ชฝ ์ž์‹์˜ ๊นŠ์ด ์ฐจ์ด๊ฐ€ 1์„ ๋„˜์ง€ ์•Š๋Š” ํŠธ๋ฆฌ

BST (์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‘” Tree.

์‚ฝ์ž…, ์‚ญ์ œ, ํƒ์ƒ‰์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(log n)

์šฉ์–ด ๊ฐœ๋…

  • ๊ท ํ˜•์น˜ (Balance factor) : ์ž์‹๋…ธ๋“œ์˜ ๊นŠ์ด ์ฐจ์ด ( ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด โ€“ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด ) BF๋Š” -1, 0, 1๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ ์ด ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ๋‹ค๋ฉด, ๊ทธ ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์€ ๊นจ์ง„๊ฒƒ๋‹ค.

ํŠน์ง•

  • BST์˜ ๋ชจ๋“  ํŠน์ง•์„ ๊ฐ–๋Š”๋‹ค.

  • ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์ž์‹์˜ ๊นŠ์ด์™€ ์˜ค๋ฅธ์ชฝ ์ž์‹์˜ ๊นŠ์ด ์ฐจ์ด๊ฐ€ 1์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

  • AVL Tree๊ฐ€ Red Black Tree๋ณด๋‹ค ๋” ์—„๊ฒฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋น ๋ฅธ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‚˜ ์‚ฝ์ž… / ์‚ญ์ œ๊ฐ€ RB Tree์— ๋น„ํ•ด ๋А๋ฆฌ๋‹ค.

  • RB Tree๋Š” Red/Black์„ ํ‘œํ˜„ํ•  ๋•Œ 1 or 0 1๋น„ํŠธ๋งŒ ์žˆ์–ด๋„ ๋˜๋‚˜ AVL Tree๋Š” ๊นŠ์ด๋ฅผ ์ €์žฅํ•  intํƒ€์ž…์˜ ์ €์žฅ์ด ํ•„์š”ํ•˜๋‹ค.

์‚ฌ์šฉ ์˜ˆ

  • ๋” ๋น ๋ฅธ ๊ฒ€์ƒ‰์ด ํ•„์š”ํ•œ DB์— ์‚ฌ์šฉ

๊ตฌํ˜„

  • Insert ( ์‚ฝ์ž… )

  • Delete ( ์‚ญ์ œ )

  • Search ( ํƒ์ƒ‰ )

์ฝ”๋“œ ๋ณด๊ธฐ(c++)

์‹œ๊ฐ„ ๋ณต์žก๋„

์ผ๋ฐ˜ BST์˜ skewdํ•œ ๊ฒฝ์šฐ๋ฅผ balancing๊ธฐ๋ฒ•์„ ํ†ตํ•ด balancedํ•œ tree๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฏ€๋กœ ํƒ์ƒ‰๊ณผ์ •์€ ์›ํ•˜๋Š” ๋Œ€๋กœ O(lgn)์ด ๋‚˜์˜จ๋‹ค. ์‚ฝ์ž…์€ ์ผ๋ฐ˜ BST์—์„œ rotate๊ณผ์ •์ด ์ถ”๊ฐ€ ๋˜์—ˆ๋Š” ๋ฐ, rotate๊ณผ์ •์€ ํฌ์ธํ„ฐ๋ณ€์ˆ˜๋ฅผ ๊ตํ™˜ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ O(1)์˜ ์—ฐ์‚ฐ์ด O(lgn)๋ฒˆ ์ˆ˜ํ–‰ ๋˜๋ฏ€๋กœ ์‚ฝ์ž…๋„ O(lgn)์„ ๊ฐ–๋Š”๋‹ค. ์‚ญ์ œ๋„ ์‚ฝ์ž…๊ณผ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๋กœ ๋™์ž‘ํ•˜๋ฏ€๋กœ O(lgn)์ด ๋‚˜์˜จ๋‹ค.

Last updated