๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[์ž๋ฃŒ ๊ตฌ์กฐ] ์Šคํ ํŠธ๋ฆฌ Skewed Tree

์ถœ์ฒ˜

ChatGPT


์Šคํ ํŠธ๋ฆฌ(Skewed Tree)๋Š” ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์นœ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค. ์ด ํŠธ๋ฆฌ๋Š” ๊ท ํ˜•์„ ์œ ์ง€ํ•˜์ง€ ๋ชปํ•œ ์ด์ง„ ํŠธ๋ฆฌ๋กœ, ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ๋งŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์Šคํ ํŠธ๋ฆฌ๋Š” ์‚ฌ์‹ค์ƒ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ๊ตฌ์กฐ๊ฐ€ ๋˜์–ด ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์—์„œ ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์Šคํ ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜

์Šคํ ํŠธ๋ฆฌ๋Š” ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์น˜์šฐ์น  ์ˆ˜ ์žˆ๋‹ค.

1. ์™ผ์ชฝ ์Šคํ ํŠธ๋ฆฌ Left-Skewed Tree

๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋งŒ์„ ๊ฐ€์ง€๊ณ , ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ์—†๋Š” ํŠธ๋ฆฌ์ด๋‹ค.

 

์˜ˆ์‹œ

    5
   /
  4
 /
3

 

2. ์˜ค๋ฅธ์ชฝ ์Šคํ ํŠธ๋ฆฌ Right-Skewed Tree

๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋งŒ์„ ๊ฐ€์ง€๊ณ , ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ์—†๋Š” ํŠธ๋ฆฌ์ด๋‹ค.

  1
   \
    2
     \
      3
       \
        4
         \
          5

 

์Šคํ ํŠธ๋ฆฌ์˜ ๋ฌธ์ œ์ 

์Šคํ ํŠธ๋ฆฌ์—์„œ๋Š” ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์žฅ์ ์„ ๊ฑฐ์˜ ์žƒ๊ฒŒ ๋œ๋‹ค. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์—์„œ ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ํŠธ๋ฆฌ์˜ ๋†’์ด์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๋Š”๋ฐ, ์Šคํ ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์•„์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)๊ฐ€ ๋œ๋‹ค.

์ด๊ฒƒ์€ ๊ท ํ˜•์žกํžŒ ์ด์ง„ ํŠธ๋ฆฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(log n)์— ๋น„ํ•ด ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค.

 

์Šคํ ํŠธ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ 

์Šคํ ํŠธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํŠน์ • ์ˆœ์„œ๋กœ ์‚ฝ์ž…๋  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์— ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ, ํŠธ๋ฆฌ๋Š” ํ•œ ์ชฝ์œผ๋กœ๋งŒ ๊ณ„์† ์ž๋ผ์„œ ์Šคํ ํŠธ๋ฆฌ๊ฐ€ ๋œ๋‹ค.

 

์˜ˆ์‹œ

// ์‚ฝ์ž… ์ˆœ์„œ: 1, 2, 3, 4, 5
BinarySearchTree bst = new BinarySearchTree();
bst.insert(1);
bst.insert(2);
bst.insert(3);
bst.insert(4);
bst.insert(5);

 

์œ„์™€ ๊ฐ™์ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ํŠธ๋ฆฌ๊ฐ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ๋งŒ ๊ณ„์† ์ž๋ผ๋ฉฐ, ์˜ค๋ฅธ์ชฝ ์Šคํ ํŠธ๋ฆฌ๊ฐ€ ํ˜•์„ฑ๋œ๋‹ค.

 

์Šคํ ํŠธ๋ฆฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์Šคํ ํŠธ๋ฆฌ๋Š” ์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋ฅด ์‚ฌ์šฉํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ํŠธ๋ฆฌ์˜ ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ ํ›„์—๋„ ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด, ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์„ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋Œ€ํ‘œ์ ์ธ ์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋กœ๋Š” AVL ํŠธ๋ฆฌ์™€ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ์ด๋“ค์€ ์‚ฝ์ž… ๋˜๋Š” ์‚ญ์ œ ์‹œ์— ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ์ž๋™์œผ๋กœ ๋งž์ถฐ์ฃผ์–ด, ํŠธ๋ฆฌ์˜ ๋†’์ด๋ฅผ log n์œผ๋กœ ์œ ์ง€ํ•œ๋‹ค.

 

๊ฒฐ๋ก 

์Šคํ ํŠธ๋ฆฌ๋Š” ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์นœ ์ด์ง„ ํŠธ๋ฆฌ๋กœ, ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜•์„ ์ด๋ฃจ์ง€ ๋ชปํ•ด ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์—์„œ ๋น„ํšจ์œจ์„ฑ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋”ฐ. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ์ž‘๊ฐ€ ๊ท ํ˜• ํŠธ๋ฆฌ(๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ, AVL ํŠธ๋ฆฌ ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.