TIL - 21.07.22 ๐Ÿ‘จโ€๐Ÿ’ป - ์ž๋ฃŒ๊ตฌ์กฐ

์„ฑํ›ˆยท2021๋…„ 7์›” 22์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
36/59
post-thumbnail

TIL - 21.07.22 ๐Ÿ‘จโ€๐Ÿ’ป

์ž๋ฃŒ๊ตฌ์กฐ

์ž๋ฃŒ๊ตฌ์กฐ๋ž€ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋“ค์˜ ๋ฌถ์Œ์„ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ํŠน์ • ์ƒํ™ฉ์— ๋†“์ธ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ํŠนํ™”๋˜์–ด ์žˆ์–ด ์—ฌ๋Ÿฌ ๊ตฌ์กฐ๋ฅผ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋น ๋ฅธ ํ•ด๊ฒฐ์— ๋„์›€์ด ๋œ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ๋Š” Stack, Queue, Tree, Graph๋“ฑ์ด ์žˆ๋‹ค.


Stack

์Šคํƒ์€ ์Œ“๋‹ค ํฌ๊ฐœ๋‹ค ๋“ฑ์˜ ๋œป์—์„œ ์ง์ž‘ํ•  ์ˆ˜ ์žˆ๋“ฏ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์Œ“๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.
์Šคํƒํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ์ œํ•œ์  ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฅผ LIFO(Last In First Out) ๋˜๋Š” FILO(First In Last Out) ๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

์Šคํƒํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๋’ค๋กœ๊ฐ€๊ธฐ ์•ž์œผ๋กœ ๊ฐ€๊ธฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ• ๋•Œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.


Queue

ํ๋Š” ์ค„์„œ์„œ ๊ธฐ๋‹ค๋ฆฌ๋‹ค, ๋Œ€๊ธฐ ํ–‰๋ ฌ ์ด๋ผ๋Š” ๋œป์—์„œ๋„ ์ง์ž‘ํ•  ์ˆ˜ ์žˆ๋“ฏ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.
ํํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์Šคํƒํ˜•๊ณผ ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐœ๋…์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ์ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ LILO(Last In Last Out) ๋˜๋Š” FIFO(First In First Out)๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

ํ๋Š” ์Œ์•… ์–ดํ”Œ์—์„œ ์ˆœ์„œ๋Œ€๋กœ ๋…ธ๋ž˜๋ฅผ ๋“ค์„๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜๊ณ  ์ปดํ“จํ„ฐ์—์„œ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”๋ฐ,
์ปดํ“จํ„ฐ์—์„œ ์ž‘์—…ํ•œ ๋ฌธ์„œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ์ฐจ๋ก€๋Œ€๋กœ ํ์— ๋ณด๋‚ด๊ณ  ํ”„๋ฆฐํ„ฐ์—์„œ ์ฐจ๋ก€๋Œ€๋กœ ํ์˜ ๋ฌธ์„œ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
์ด์ฒ˜๋Ÿผ ์ž„์‹œ๋กœ ์Œ“์€ ํ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ์„ Buffer(๋ฒ„ํผ)๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋Š” CPU์˜ ์ด๋ฒคํŠธ๋Š” ๋ถˆ๊ทœ์น™์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐ˜๋ฉด, ๋ณดํ†ต ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์žฅ์น˜(ํ”„๋ฆฐํŠธ ๋“ฑ)์€ ์ผ์ •ํ•œ ์†๋„๋กœ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ์ด ๊ฐ„๊ฒฉ์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด์„œ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.


Graph

๊ทธ๋ž˜ํ”„ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ๋Š” ๊ฐ ์ž๋ฃŒ๋ฅผ ์ •์ (Vertex)์ด๋ผ ํ•˜๊ณ , ๊ฐ ์ •์ ๊ฐ„ ์—ฐ๊ฒฐ์ด ๋˜์–ด ์žˆ์œผ๋ฉด ์ง์ ‘์  ๊ด€๊ณ„๋ผ๊ณ  ํ•˜๊ณ  ์ด ์—ฐ๊ฒฐ์„ ๊ฐ„์„ (Edge)์ด๋ผ ํ•œ๋‹ค. ์ง์ ‘ ์—ฐ๊ฒฐ์ด ์•„๋‹ˆ๋ผ๋„ ๋‹ค๋ฅธ ์ •์ ์„ ๊ฑฐ์ณ์„œ ์—ฐ๊ฒฐ ๋˜๊ธฐ๋งŒ ํ•˜๋ฉด ๊ฐ„์ ‘์  ๊ด€๊ณ„๋ผ๊ณ  ํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ๊ฐ„์„ ์€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ๋งŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  ์ •์ ๊ฐ„ ์—ฐ๊ฒฐ์ •๋„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ํฌํ•จํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค.
์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ์—†๋Š” ๊ทธ๋ž˜ํ”„ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋น„๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•œ๋‹ค.
์ด์™€ ๋ฐ˜๋Œ€๋กœ ์—ฐ๊ฒฐ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๋ผ ํ•œ๋‹ค.

์ฃผ์š” ๊ทธ๋ž˜ํ”„ ์šฉ์–ด

  • ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(Undirected Graph) - ์„œ๋กœ ์˜ค๊ณ  ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ผ ํ•˜๊ณ , ์ด์™€ ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐœ๋…์ด ์ผ๋ฐฉํ†ตํ–‰์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(Directed Graph)์ด๋‹ค.

  • ์ง„์ž… ์ฐจ์ˆ˜(In-degree), ์ง„์ถœ ์ฐจ์ˆ˜(Out-degree) - ํ•œ ์ •์ ์— ์ง„์ž…ํ•˜๋Š” ๊ฐ„์„ ๊ณผ ์ง„์ถœํ•˜๋Š” ๊ฐ„์„ ์ด ๋ช‡๊ฐœ์ธ์ง€ ํ‘œ๊ธฐํ•œ๋‹ค.

  • ์ธ์ ‘(Adjacency) - ๋‘ ์ •์ ์ด ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด ์ธ์ ‘ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

  • ์ž๊ธฐ ๋ฃจํ”„(Self-loop) - ํ•œ ์ •์ ์—์„œ ์ง„์ถœํ•œ ๊ฐ„์„ ์ด ์ž์‹ ์—๊ฒŒ ๋Œ์•„์™€ ์ง„์ž…ํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ ์ •์ ์€ ์ž๊ธฐ ๋ฃจํ”„๋ฅผ ๊ฐ€์กŒ๋‹ค๊ณ  ํ•œ๋‹ค.

  • ์‹ธ์ดํด (Cycle) - ํ•œ ์ •์ ์—์„œ ์ถœ๋ฐœํ•ด ๋‹ค๋ฅธ ์ •์ ์„ ๊ฑฐ์ณ ๋‹ค์‹œ ์ถœ๋ฐœํ•œ ์ •์ ์œผ๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„๋ผ ํ•œ๋‹ค.

์ธ์ ‘ ํ–‰๋ ฌ

์ธ์ ‘ ํ–‰๋ ฌ์€ ์ •์ ๊ฐ„ ์ธ์ ‘ํ•˜๋‹ค๋ฉด 1, ์•„๋‹ˆ๋ผ๋ฉด 0์œผ๋กœ ํ‘œ๊ธฐํ•˜๋Š” ์ผ์ข…์˜ ํ‘œ์ด๋‹ค.
๋งŒ์•ฝ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๋ผ๋ฉด 1 ๋Œ€์‹  ์œ ์˜๋ฏธํ•œ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

์ธ์ ‘ ํ–‰๋ ฌ์€ ๋‘ ์ •์ ๊ฐ„ ๊ด€๊ณ„๋ฅผ ํ™•์ธํ• ๋•Œ ์šฉ์ดํ•˜๋ฉฐ ๊ฐ€์žฅ ๋น ๋ฅธ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ

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


Tree

ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ํ•œ ๊ตฌ์กฐ๋กœ ๋ฟŒ๋ฆฌ๋ถ€ํ„ฐ ๊ฐ€์ง€ ๋ป—์–ด๋‚˜๊ฐ€๋Š” ๋ชจ์Šต์ด ๋‹ฎ์•˜๋‹ค๊ณ  ํ•ด์„œ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ผ๊ณ  ํ•œ๋‹ค.

ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋กœ ์•„๋ž˜ ์žˆ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ์— ๋ฌด๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๊ณ„์ธต์  ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, ํ•œ ๋ฐ์ดํ„ฐ ๋’ค์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์„ ํ˜• ๊ตฌ์กฐ์ด๋‹ค.
ํŠธ๋ฆฌ๊ตฌ์กฐ๋Š” ์•„๋ž˜๋กœ๋งŒ ๋ป—์–ด ๋‚˜๊ฐ€๊ธฐ์— ์‹ธ์ดํด์€ ์—†๋‹ค.

ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋…ธ๋“œ(Node)๋ผ๊ณ  ์นญํ•˜๋ฉฐ ๋ฃจํŠธ(Root)๋ผ๋Š” ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‘๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์ƒํ•˜๋กœ ์—ฐ๊ฒฐ๋˜๋ฉด ๋ถ€๋ชจ์ž์‹ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋ฉฐ ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ๋Š” ๋ฆฌํ”„(Leaf)๋…ธ๋“œ๋ผ๊ณ  ํ•œ๋‹ค.

ํŠธ๋ฆฌ๊ตฌ์กฐ ํ‚ค์›Œ๋“œ

  • ๋…ธ๋“œ(Node) - ํŠธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋Š” ๋ชจ๋“  ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ์ด๋‹ค.
  • ๋ฃจํŠธ(Root) - ํŠธ๋ฆฌ๊ตฌ์กฐ์˜ ์‹œ์ž‘์ ์ด ๋˜๋Š” ์ตœ์ƒ์œ„ ๋…ธ๋“œ์ด๋‹ค.
  • ๋ถ€๋ชจ(Parents)๋…ธ๋“œ - ๋‘ ๋…ธ๋“œ๊ฐ€ ์ธ์ ‘ํ• ๋•Œ ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ๋…ธ๋“œ๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ž์‹(Child)๋…ธ๋“œ - ๋‘ ๋…ธ๋“œ๊ฐ€ ์ธ์ ‘ํ• ๋•Œ ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ์ƒ๋Œ€์ ์œผ๋กœ ๋จผ ๋…ธ๋“œ๋ฅผ ์ž์‹๋…ธ๋“œ๋ผ๊ณ  ํ•œ๋‹ค.
  • ๋ฆฌํ”„(Leaf)๋…ธ๋“œ - ํŠธ๋ฆฌ๊ตฌ์กฐ์˜ ๋์œผ๋กœ ์ž์‹๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ๋ฅผ ๋ฆฌํ”„๋…ธ๋“œ๋ผ ํ•œ๋‹ค.

Depth, Level, Height, Sub-tree

  • ๊นŠ์ด(Depth) - ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ๋Š” ๋ฃจํŠธ๋กœ ๋ถ€ํ„ฐ ํ•˜์œ„ ๊ณ„์ธต์˜ ํŠน์ • ๋…ธ๋“œ๊นŒ์ง€์˜ ๊นŠ์ด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
    ๋ฃจํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ 0์ด๊ณ , ์ž์‹์œผ๋กœ ๋‚ด๋ ค๊ฐˆ๋•Œ๋งˆ๋‹ค 1์”ฉ ๋”ํ•ด์ง„๋‹ค.

  • ๋ ˆ๋ฒจ(Level) - ํŠธ๋ฆฌ๊ตฌ์กฐ์—์„œ ๊ฐ™์€ ๊นŠ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๋ฌถ์–ด ๋ ˆ๋ฒจ๋กœ ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    ๊นŠ์ด๊ฐ€ 0์ธ ๋ฃจํŠธ๋Š” Level 1์ด๋ฉฐ ๊นŠ์ด๊ฐ€ ๊นŠ์–ด ์งˆ์ˆ˜๋ก ํ•œ๋‹จ๊ณ„ ์”ฉ ๋ ˆ๋ฒจ์ด ์˜ฌ๋ผ๊ฐ€๋ฉฐ, ๊ฐ™์€ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ๋ฅผ ํ˜•์ œ(Siblings)๋…ธ๋“œ๋ผ๊ณ  ํ•œ๋‹ค.

    DOM์—์„œ๋Š” ๊ฐ™์€ ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ˜•์ œ ๋…ธ๋“œ๋กœ ๋ณธ๋‹ค.
    ๊ณ ๋กœ DOM์—์„œ ํ˜•์ œ ๋…ธ๋“œ๋Š” DOM์˜ ์ •์˜์—์„œ๋„ ํ˜•์ œ ๋…ธ๋“œ์ด๊ณ  ํŠธ๋ฆฌํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ •์˜์—์„œ๋„ ํ˜•์ œ ๋…ธ๋“œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
    ๋‹ค๋งŒ ๊ฐ™์€ ๋ ˆ๋ฒจ์ด๋‚˜ ๋‹ค๋ฅธ ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” DOM์˜ ์ •์˜์—์„œ๋Š” ํ˜•์ œ ๋…ธ๋“œ๊ฐ€ ์•„๋‹ˆ๊ณ  ํŠธ๋ฆฌํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ •์˜์—์„œ๋Š” ํ˜•์ œ ๋…ธ๋“œ์ด๋‹ค.

  • ๋†’์ด(Height) - ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฃจํŠธ๊นŒ์ง€์˜ ๋†’์ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    ๋ฆฌํ”„๊ฐ€ ์ œ ๊ฐ๊ฐ ๊ธฐ์ค€์ด ๋˜๋Š”๋ฐ ์ž์‹์ด ์žˆ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ๊ฐ€์žฅ ๋†’์ด ์žˆ๋Š” ์ž์‹์˜ ๋†’์ด์— +1 ํ•œ ๋†’์ด๋ฅผ ๊ฐ€์ง„๋‹ค.

  • ์„œ๋ธŒ ํŠธ๋ฆฌ(Sub-tree) - ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ๋‚˜์˜ค๋Š” ํฐ ํŠธ๋ฆฌ ๋‚ด๋ถ€์— ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ˜ ์ž‘์€ ํŠธ๋ฆฌ๋ฅผ ์„œ๋ธŒ ํŠธ๋ฆฌ๋ผ ํ•œ๋‹ค.


์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ( Binary Search Tree )

์ด์ง„ ํŠธ๋ฆฌ๋Š” ํšจ์œจ์ ์ธ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์ •์˜๋œ ํŠธ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค.

์ด์ง„ ํŠธ๋ฆฌ๋Š” ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ 2๊ฐœ์ธ ๋…ธ๋“œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ์ด๊ณ  ์ด ๋‘๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋Š” ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.
์ด์ง„ ํŠธ๋ฆฌ๋Š” ์ž๋ฃŒ์˜ ์‚ฝ์ž…, ์‚ญ์ œ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์ • ์ด์ง„ ํŠธ๋ฆฌ, ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ, ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  • ์ • ์ด์ง„ ํŠธ๋ฆฌ (Full Binary Tree) - ์ • ์ด์ง„ ํŠธ๋ฆฌ๋Š” ๊ฐ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง€๊ฑฐ๋‚˜ ์•„์˜ˆ ๊ฐ€์ง€์ง€ ์•Š๋Š” ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.
  • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ (Complete Binary Tree) - ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•œ ๋…ธ๋“œ๊ฐ€ ๋ชจ๋‘ ๊ฐ€๋“ ์ฑ„์›Œ์ ธ ์žˆ๊ณ , ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ๋Š” ๋‹ค ์ฐจ์ง„ ์•Š์•„๋„ ์™ผ์ชฝ ๋…ธ๋“œ๋Š” ์ฑ„์›Œ์ ธ์žˆ๋Š” ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.
  • ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ (Perfect Binary Tree) - ์ • ์ด์ง„ ํŠธ๋ฆฌ์ด๋ฉฐ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์ธ ํŠธ๋ฆฌ์ด๋‹ค.
    ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ ๋ ˆ๋ฒจ์ด ๋™์ผํ•˜๊ณ  ๋ชจ๋“  ๋ ˆ๋ฒจ์ด ์ฑ„์›Œ์ ธ ์žˆ๋‹ค.

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ํŠน์ง•

  • ๋ชจ๋“  ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’์ด ๋ฃจํŠธ๋‚˜ ๋ถ€๋ชจ๋ณด๋‹ค ์ž‘๋‹ค.
  • ๋ชจ๋“  ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’์ด ๋ฃจํŠธ๋‚˜ ๋ถ€๋ชจ๋ณด๋‹ค ํฌ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์ง• ๋•์— ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ํ•œ์ชฝ์œผ๋กœ ๋ชฐ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
ํ•œ์ชฝ์œผ๋กœ ๋ชฐ๋ฆด ๊ฒฝ์šฐ ํƒ์ƒ‰ ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋‹ˆ ์žฌ์กฐ์ •๊ณผ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค.


GOOD ๐Ÿ˜‰

๊ทธ๋ž˜ํ”„ํ˜•๊ณผ ํŠธ๋ฆฌํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ตํ˜”๋‹ค.
๋‚œ๊ด€์— ๋ถ€๋”ซํžŒ ๋™๊ธฐ์˜ ๋ฌธ์ œ๋ฅผ ํ™”๋‘๋งŒ ๋˜์ ธ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋„์™€์คฌ๋‹ค.
ํ† ์ด 1๋ฒˆ ํ’€์—ˆ๋‹ค!
๋‚ด์ผ ๊ธˆ์š”์ผ

BAD ๐Ÿ˜ฅ

์ตํžˆ๋Š”๋ฐ ์‹œ๊ฐ„์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

TO DO ๐Ÿ”ฅ

  • ์ž๋ฃŒ ๊ตฌ์กฐ ์ตํžˆ๊ธฐ
  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ํด๋ก 

Retrospect ๐Ÿง

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

์ด์ „์— ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ push, pop ๊ฐ™์€ ๊ฒƒ๋“ค ์ •๋ฆฌํ•˜๋ฉด์„œ ์Šคํƒํ˜•์ด๋ž‘ ํํ˜•์€ ์กฐ๊ธˆ ์ •๋ฆฌํ•ด๋†”์„œ ์˜ค๋Š˜ ๋‹ค์‹œ ๋งŒ๋‚ฌ์„๋•Œ ๋ถ€๋‹ด์ด ๋œํ–ˆ๋‹ค.

์•„์ฃผ ์นญ์ฐฌํ•ด ๊ณผ๊ฑฐ์˜ ๋‚˜!

profile
์–ด๋–ป๊ฒŒ ์ด๊ฑธ ํ’€์–ด๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ

0๊ฐœ์˜ ๋Œ“๊ธ€