[์ž๋ฃŒ๊ตฌ์กฐ(Data Structure)] Tree / Hashing


ํŠธ๋ฆฌ (Tree)


  • ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์ž์‹ ๋…ธ๋“œ๊ฐ„์˜ ์—ฐ๊ฒฐ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ ๊ตฌ์กฐ


์ด์ง„ ํŠธ๋ฆฌ (binary tree)

  • ๋ถ€๋ชจ๋…ธ๋“œ์— ์ž์‹๋…ธ๋“œ๊ฐ€ ๋‘ ๊ฐœ ์ดํ•˜์ธ ํŠธ๋ฆฌ (๊ฐ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง)


์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ (binary search tree)

  • ์ž๋ฃŒ(key)์˜ ์ค‘๋ณต ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ

  • ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์€ ๊ฐ’ / ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ง

  • ์ž๋ฃŒ ๊ฒ€์ƒ‰์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ = ํ‰๊ท  log(n)


ํž™ (heap)

  • ์ตœ๋Œ“๊ฐ’ ๋ฐ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„๋‚ด๋Š” ์—ฐ์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ์™„์ „์ด์ง„ํŠธ๋ฆฌ(complete binary tree)๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ(tree-based structure)

    • Max heap (์ตœ๋Œ€ ํž™): ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํ•ญ์ƒ ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง

    • Min heap (์ตœ์†Œ ํž™) : ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํ•ญ์ƒ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง

    • ํ‚ค๊ฐ’์˜ ๋Œ€์†Œ๊ด€๊ณ„๋Š” ๋ถ€๋ชจ-์ž์‹๋…ธ๋“œ๊ฐ„์—๋งŒ ์„ฑ๋ฆฝ, ํ˜•์ œ ์‚ฌ์ด์—๋Š” ๋Œ€์†Œ๊ด€๊ณ„ ์ •ํ•ด์ง€์ง€ ์•Š์Œ

  • ๊ฐ€์žฅ ๋†’(๋‚ฎ)์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ๋ฟŒ๋ฆฌ๋…ธ๋“œ์— ์œ„์น˜ > ์šฐ์„ ์ˆœ์œ„ ํ(Priority queue)์™€ ๊ฐ™์€ ์ถ”์ƒ์  ์ž๋ฃŒํ˜• ๊ตฌํ˜„ ๊ฐ€๋Šฅ



ํ•ด์‹ฑ (Hashing)


  • ํ‚ค(key)์— ๋Œ€ํ•œ ์ž๋ฃŒ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์ „(dictionary) ๊ฐœ๋…์˜ ์ž๋ฃŒ ๊ตฌ์กฐ

  • key - value ํ•œ ์Œ, key๋Š” ์œ ์ผ

  • index = h(key)

    • ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค๋ฅผ ํ•ด์‹œ๊ฐ’์œผ๋กœ ๋งคํ•‘, ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜
    • ํ•ด๋‹น ์ธ๋ฑ์Šค ์œ„์น˜์— ์ž๋ฃŒ ์ €์žฅ, ๊ฒ€์ƒ‰
  • ์ด๋ ‡๊ฒŒ ์ €์žฅ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ โ€˜ํ•ด์‹œํ…Œ์ด๋ธ”(Hash table)โ€™์ด๋ผ๊ณ  ํ•จ

Categories:

Java