๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

BST

๐Ÿค” BST(Binary Search Tree, ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ)์ด๋ž€?โ€‹

BST

  • ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉด์„œ, ์ด์ง„ ํƒ์ƒ‰ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์งœ์—ฌ์ ธ ์žˆ๋Š” ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.
  • ํ•ด๋‹น Node๋กœ๋ถ€ํ„ฐ ์™ผ์ชฝ Subtree์˜ ๋ชจ๋“  Node๋Š” ํ•ด๋‹น Node๋ณด๋‹ค ์ž‘์€ ๊ฐ’์ด๋ฉฐ, ์˜ค๋ฅธ์ชฝ Subtree์˜ ๋ชจ๋“  Node๋Š” ํ•ด๋‹น Node๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠน์ง•โ€‹

  • ๋ชจ๋“  Node์˜ Children์€ ์ตœ๋Œ€ 2๊ฐœ์ž…๋‹ˆ๋‹ค. (์™ผ์ชฝ ์•„๋‹ˆ๋ฉด ์˜ค๋ฅธ์ชฝ)

    ๋ชจ๋“  Tree๊ฐ€ ๊ท ํ˜• ์ƒํƒœ์ผ ๋•Œ (๋ชจ๋“  Node์˜ ์ž์†์ด 2๊ฐœ์ด๊ฑฐ๋‚˜ ์—†๋‹ค๋ฉด) ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(logN)์ž…๋‹ˆ๋‹ค.

    ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด, ์ตœ๋Œ€ O(N)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

  • ๊ฐ’์„ ์ฐพ์„ ๋•Œ, Binary Search๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿค” BST์˜ ์‚ญ์ œ, ์‚ฝ์ž…, ํƒ์ƒ‰ ๊ณผ์ •โ€‹

  • ํƒ์ƒ‰(Search)

    • Root Node์—์„œ ์‹œ์ž‘ํ•ด Binary Search ๊ณผ์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฝ์ž…(Insert)

    1. Root Node์—์„œ ์‹œ์ž‘ํ•ด Binary Search ๊ณผ์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    2. Leaf Node๊นŒ์ง€ ๋„๋‹ฌ ํ›„ Binary Search๋ฅผ ํ†ตํ•ด ๊ฐ’์— ๋”ฐ๋ผ ์œ„์น˜๋ฅผ ์ •ํ•œ ํ›„ Node๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ญ์ œ(Deletion)

    • ๋งจ ๋งˆ์ง€๋ง‰ Leaf Node๊ฐ€ ์•„๋‹Œ ์ค‘๊ฐ„ Node๋ฅผ ์ง€์›Œ์•ผ ํ•œ๋‹ค๋ฉด, ์ง€์šธ Node์˜ Children์„ ์ด์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • Leaf Node์ผ ๋•Œ

      1. ๊ฐ’์„ ์ง€์šฐ๊ณ  ๋ถ€๋ชจ์—๊ฒŒ Null ๊ฐ’์„ returnํ•ฉ๋‹ˆ๋‹ค.
    • Internal Node์ผ ๋•Œ

      delete

      1. ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด Successor(์ž์†)์„ ์ฐพ๊ณ , ์ง€์šฐ๋ ค๋Š” Node์— ๊ทธ ์ž์†์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

        Successor๋Š” right Subtree์˜ ์ตœ์†Ÿ๊ฐ’์ž…๋‹ˆ๋‹ค.

      2. ๊ทธ ์ž์†์˜ Data๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›  ๊ด€๋ จ ๋ฌธ์ œโ€‹