Tree, Graph

Mixerยท2022๋…„ 5์›” 30์ผ
0

Tree๐ŸŒณ

Tree ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋‚˜๋ฌด์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค ํ•˜์ง€๋งŒ ๋‚˜๋ฌด๋ฅผ ๊ฑฐ๊พธ๋กœ ๋’ค์ง‘์€ ๋ชจ์Šต์ด๋‹ค.
๋‹จ๋ฐ˜ํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ํ•œ ๊ตฌ์กฐ๋กœ, ๋ฟŒ๋ฆฌ๋ถ€ํ„ฐ ๊ฐ€์ง€๊นŒ์ง€ ์‚ฌ๋ฐฉ์œผ๋กœ ๋ป—์–ด๋‚˜๊ฐ€๋Š”๊ฒŒ ๋‚˜๋ฌด์™€ ์œ ์‚ฌํ•ด์„œ ํŠธ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค.


์ด๋ฏธ์ง€ ์ถœ์ฒ˜

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

ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” root๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.
ํ•˜๋‚˜ ํ•˜๋‚˜์˜ ์›๋“ค์„ '๋…ธ๋“œ(Node)' ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๋…ธ๋“œ๋ผ๋ฆฌ ์—ฐ๊ฒฐ๋  ์‹œ ์ƒ์œ„ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ ๋…ธ๋“œ(parent Node), ํ•˜์œ„ ๋…ธ๋“œ๋ฅผ ์ž์‹ ๋…ธ๋“œ (Child Node) ๋ผ ํ•œ๋‹ค.
์ด๋ ‡๊ฒŒ ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ(Leaf Node) ๋ผ๊ณ  ํ•œ๋‹ค.

๋˜ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๊นŠ์ด์™€ ๋†’์ด, ๋ ˆ๋ฒจ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

๊นŠ์ด(depth)

ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„  ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ํ•˜์œ„ ๊ณ„์ธต์˜ ํŠน์ • ๋…ธ๋“œ๊นŒ์ง€์˜ ๊นŠ์ด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฃจํŠธ ๋…ธ๋“œ๋Š” ์ง€๋ฉด์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊นŠ์ด๋Š” 0 ์ด๋‹ค.
๋ฃจํŠธ A ๊นŠ์ด๋Š” 0
๋ฃจํŠธ B,C ๊นŠ์ด๋Š” 1
๋ฃจํŠธ D,E,F,G ๊นŠ์ด๋Š” 2
๋‚ด๋ ค๊ฐˆ์ˆ˜๋ก ์ˆซ์ž๋Š” ์ฆ๊ฐ€ํ•œ๋‹ค

๋ ˆ๋ฒจ(level)

ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ ๊ฐ™์€ ๊นŠ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๋ฌถ์–ด์„œ ๋ ˆ๋ฒจ๋กœ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

level1 : ๋ฃจํŠธ A ๊นŠ์ด๋Š” 0
level2 : ๋ฃจํŠธ B,C ๊นŠ์ด๋Š” 1
level3 : ๋ฃจํŠธ D,E,F,G ๊นŠ์ด๋Š” 2

์ด๋ ‡๊ฒŒ ๋™์ผํ•œ ๋ ˆ๋ฒจ์— ๋‚˜๋ž€ํžˆ ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ํ˜•์ œ ๋…ธ๋“œ(Sibling Node) ๋ผ ํ•œ๋‹ค.

๋†’์ด(Height)

ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฃจํŠธ๊นŒ์ง€์˜ ๋†’์ด ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค
๋ฆฌํ”„ ๋…ธ๋“œ์™€ ์ง๊ฐ„์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์˜ ๋†’์ด๋ฅผ ํ‘œํ˜„ํ•˜๋ฉฐ, ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ๋†’์€ height + 1 ํ•œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ๋†’์ด๋ฅผ 0 ์œผ๋กœ ๋†“๋Š”๋‹ค.
๊ทธ๋ฆผ ์˜ˆ์ œ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” H,I,E,F,J ์ด๋ฉฐ ๋†’์ด๋Š” 0 ์ด๋‹ค.
D,G์˜ ๋†’์ด๋Š” 1
B,C์˜ ๋†’์ด๋Š” 2
๋ฃจํŠธ A์˜ ๋†’์ด๋Š” 3 ์ด๋‹ค.

์„œ๋ธŒ ํŠธ๋ฆฌ(Sub tree)

ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋ฃจํŠธ์—์„œ ์‹œ์ž‘ ๋œ ํฐ ํŠธ๋ฆฌ์— ๋‚ด๋ถ€์—์„œ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ˜ ์ž‘์€ ํŠธ๋ฆฌ๋ฅผ ์„œ๋ธŒ ํŠธ๋ฆฌ ๋ผ๊ณ ํ•œ๋‹ค.
๊ฐ„๋žตํ•˜๊ฒŒ ์„ธ ๊ฐœ์˜ ์„œ๋ธŒ ํŠธ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ–ˆ๋‹ค.
(B D E)
(D H I)
(C F G J)


์šฉ์–ด ์ •๋ฆฌ

  • ๋…ธ๋“œ : ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋Š” ๋ชจ๋“  ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ
  • ๋ฃจํŠธ : ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ์‹œ์ž‘์ ์ด ๋œ ๋…ธ๋“œ
  • ๋ถ€๋ชจ ๋…ธ๋“œ : ๋‘ ๋…ธ๋“œ๊ฐ€ ์ƒํ•˜๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„๋•Œ ๋ฃจํŠธ์™€ ๋” ๊ฐ€๊นŒ์šด ๋…ธ๋“œ
  • ์ž์‹ ๋…ธ๋“œ : ๋‘ ๋…ธ๋“œ๊ฐ€ ์ƒํ•˜๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ๋  ๋•Œ ์ƒ๋Œ€์ ์œผ๋กœ ๋ฃจํŠธ์™€ ๋จผ ๋…ธ๋“œ
  • ๋ฆฌํ”„ : ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋ ์ง€์ , ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ

Graph

๊ทธ๋ž˜ํ”„๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ ๋“ค์ด ์„œ๋กœ ๋ณต์žกํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋‹ค.
์ˆ˜ํ•™์—์„œ์˜ ๊ทธ๋ž˜ํ”„์™€ ์ปดํ“จํ„ฐ ๊ณตํ•™์—์„œ ์„ค๋ช…ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„๋Š” ๋‹ค๋ฅธ ๋ชจ์Šต์ด๋‹ค
์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„๋Š” ๊ฑฐ๋ฏธ์ค„์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ ๋“ค์ด ์„ ์œผ๋กœ ์ด์–ด์ ธ ์žˆ๋Š” ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ๋ง ์ฒ˜๋Ÿผ ์ƒ๊ฒผ๋‹ค.

Graph ๊ตฌ์กฐ

์ง์ ‘์ ์ธ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‘ ์  ์‚ฌ์ด๋ฅผ ์ด์–ด์ฃผ๋Š” ์„ ์ด ์žˆ๋‹ค.
๊ฐ„์ ‘์ ์ธ ๊ด€๊ณ„๋ผ๋ฉด ๋ช‡ ๊ฐœ์˜ ์ ๊ณผ ์„ ์— ๊ฑธ์ณ ์ด์–ด์ง„๋‹ค.
ํ•˜๋‚˜์˜ ์ ์„ ๊ทธ๋ž˜ํ”„์—์„  ์ •์ (vertex)๋ผ ํ•˜๋ฉฐ, ํ•˜๋‚˜์˜ ๊ฐ„์„ (edge)๋ผ ํ•œ๋‹ค.

์œ„ ๊ทธ๋ž˜ํ”„์—์„œ V(vertex)= {0,1,2,3,4} E(edges) = {01,12,23,34,04,14,13}์œผ๋กœ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค

Graph์˜ ํ‘œํ˜„ ๋ฐฉ์‹

์ธ์ ‘ ํ–‰๋ ฌ

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

์ธ์ ‘ํ–‰๋ ฌ์€ ์–ธ์ œ ์‚ฌ์šฉ๋˜๋‚˜?

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

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

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ ์ •์ ์ด ์–ด๋–ค ์ •์ ๊ณผ ์ธ์ ‘ํ•˜๋Š”์ง€๋ฅผ ๋ฆฌ์ŠคํŠธ์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ๋‹ค
๊ฐ ์ •์ ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ๋ฆฌ์ŠคํŠธ๋Š” ์ž์‹ ๊ณผ ์ธ์ ‘ํ•œ ๋‹ค๋ฅธ ์ •์ ์„ ๋‹ด๊ณ  ์žˆ๋‹ค.

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

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ์–ธ์ œ ์‚ฌ์šฉ๋˜๋‚˜?

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

์ธ์ ‘ ํ–‰๋ ฌ๊ณผ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์˜ ์žฅ๋‹จ์ 

--์ธ์ ‘ ํ–‰๋ ฌ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ
์‹œ๊ฐ„๋ณต์žก๋„O(N^2) ์ •์  N * N๋งŒํผ ํ•„์š”O(N) N : ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜
๋‘ ์ •์ ์˜ ์—ฐ๊ฒฐ ์—ฌ๋ถ€graph[x][y] ์˜ ๊ฐ’์œผ๋กœ ํ•œ๋ฒˆ์— ํ™•์ธgraph ์˜ ์›์†Œ์—์„œ y๊ฐ€ ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ ํƒ์ƒ‰
์ธ์ ‘ ๋…ธ๋“œ ํŒŒ์•… ์—ฌ๋ถ€N * N๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ์•„ ํ™•์ธํ•œ๋‹ค.๊ฐ ๋ฆฌ์ŠคํŠธ์— ๋‹ด๊ฒจ์žˆ๋Š” ์›์†Œ๋ฅผ ํ™•์ธํ•œ๋‹ค

ํ–‰๋ ฌ์˜ ๊ฒฝ์šฐ, ๋‘ ์ •์ ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์‰ฝ๋‹ค.
graph[x][y]์˜ ๊ฐ’์„ ๋ฐ”๋กœ ํ™•์ธํ•ด ์œ ๋ฌด๋ฅผ ํŒ๋‹จ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ
๋‹จ, ์ •์ ์ด N๊ฐœ์ธ ๊ฒฝ์šฐ, ํ–‰๋ ฌ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„  N*N ๋งŒํผ์˜ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค
๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ์—” ์ ˆ๋ฐ˜์˜ ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋˜๋Š” ์…ˆ

๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ, ์‹ค์ œ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค๋งŒ ๋ฆฌ์ŠคํŠธ ์›์†Œ์— ๋‹ด๊ฒจ์žˆ์œผ๋ฏ€๋กœ ๊ณต๊ฐ„ ๋ณต์žก๋„๊ฐ€ N(๊ฐ„์„ )์ด๋‹ค.
๋‹ค๋งŒ, ๋‘ ์ •์  x,y๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์œผ๋ฉด ๋…ธ๋“œx ๋ฆฌ์ŠคํŠธ๋กœ ๋“ค์–ด๊ฐ€ ์›์†Œ y๊ฐ€ ์žˆ๋Š”์ง€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ญ‰ ํƒ์ƒ‰ํ•ด์•ผํ•ด์„œ ํ–‰๋ ฌ๋ณด๋‹ค ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

๊ฐ„์„ ์ด ๋งŽ์€ ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ์—” ์ธ์ ‘ ํ–‰๋ ฌ์„ ํ†ตํ•ด ๋น ๋ฅด๊ฒŒ ์—ฐ๊ฒฐ ์—ฌ๋ถ€ ํ™•์ธ์ด ๊ฐ€๋Šฅ
๊ฐ„์„ ์ด ์ ์€ ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ์—” ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ธ์ ‘ ๋…ธ๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธ์ด ๊ฐ€๋Šฅ

Binary Search Tree

ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ํŽธ๋ฆฌํ•œ ๊ตฌ์กฐ๋ฅผ ์ „์‹œํ•˜๋Š” ๊ฒƒ ์™ธ ํšจ์œจ์ ์ธ ํƒ์ƒ‰์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค


์ด๋ฏธ์ง€์ถœ์ฒ˜

๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๋งŽ์ด ์‚ฌ์šฉํ•œ์€ ์ด์ง„ ํŠธ๋ฆฌ(binary tree)์™€ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (binary search tree)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

์ด์ง„ ํŠธ๋ฆฌ๋Š” ์ž๋ฃŒ์˜ ์‚ฌ์ž…, ์‚ญ์ œ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์ • ์ด์ง„ ํŠธ๋ฆฌ(Full binary tree). ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete binary tree), ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ(Perfect binary tree)๋กœ ๋‚˜๋‰œ๋‹ค

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

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ๋ชจ๋“  ์™ผ์ชฝ ์ž์‹์˜ ๊ฐ’์ด ๋ฃจํŠธ๋‚˜ ๋ถ€๋ชจ๋ณด๋‹ค ์ž‘๊ณ , ๋ชจ๋“  ์˜ค๋ฅธ์ชฝ ์ž์‹์˜ ๊ฐ’์ด ๋ฃจํŠธ๋‚˜ ๋ถ€๋ชจ๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํŠน์ง•์ด ์žˆ๋‹ค

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


์•Œ์•„๋‘์–ด์•ผ ํ•  ๊ทธ๋ž˜ํ”„ ์šฉ์–ด

  • ์ •์ (vertex): ๋…ธ๋“œ(node)๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์›์†Œ
  • ๊ฐ„์„ (edge): ์ •์ (node) ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์ธ์ ‘ ์ •์ (adjacent vertex): ํ•˜๋‚˜์˜ ์ •์ ์—์„œ ๊ฐ„์„ ์— ์˜ํ•ด ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ •์ ์„ ๋งํ•œ๋‹ค.
  • ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„(weighted Graph): ์—ฐ๊ฒฐ์˜ ๊ฐ•๋„(์ถ”๊ฐ€์ ์ธ ์ •๋ณด)๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€ ์ ํ˜€์ ธ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„
  • ๋น„๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„(unweightd Graph): ์—ฐ๊ฒฐ์˜ ๊ฐ•๋„๊ฐ€ ์ ํ˜€์ ธ ์žˆ์ง€ ์•Š๋Š” ๊ทธ๋ž˜ํ”„
  • ๋ฌด(๋ฐฉ)ํ–ฅ ๊ทธ๋ž˜ํ”„ (undirected graph): ์„œ์šธ์—์„œ ๋ถ€์‚ฐ์„ ๊ฐˆ ์ˆ˜ ์žˆ๋“ฏ, ๋ฐ˜๋Œ€๋กœ ๋ถ€์‚ฐ์—์„œ ์„œ์šธ๋กœ ๊ฐ€๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค, ํ•˜์ง€๋งŒ ๋‹จ๋ฐฉํ–ฅ(directed) ๊ทธ๋ž˜ํ”„๋กœ ๊ตฌํ˜„๋œ๋‹ค๋ฉด ์„œ์šธ์—์„œ ๋ถ€์‚ฐ์€ ๊ฐˆ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ถ€์‚ฐ์—์„œ ์„œ์šธ๋กœ ๊ฐ€๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€ํ•˜๋‹ค(๋ฐ˜๋Œ€๋กœ ๋˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€). ๋งŒ์•ฝ ๋‘ ์ง€์ ์ด ์ผ๋ฐฉํ†ตํ–‰ ๋„๋กœ๋กœ ์ด์–ด์ ธ ์žˆ๋‹ค๋ฉด ๋‹จ๋ฐฉํ–ฅ์ธ ๊ฐ„์„ ์œผ๋กœ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ง„์ž…์ฐจ์ˆ˜(in-degree)/์ง„์ถœ์ฐจ์ˆ˜(out-degree): ํ•œ ์ •์ ์— ์ง„์ž…ํ•˜๊ณ  ์ง„์ถœํ•˜๋Š” ๊ฐ„์„ ์ธ ๋ช‡๊ฐœ์ธ์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์ธ์ ‘(adjacency): ๋‘ ์ •์  ๊ฐ„์— ๊ฐ„์„ ์ด ์ง์ ‘ ์ด์–ด์ ธ ์žˆ๋‹ค๋ฉด ์ด ๋‘ ์ •์ ์€ ์ธ์ ‘ํ•œ ์ •์ ์ด๋‹ค
  • ์ž๊ธฐ ๋ฃจํ”„(self loop): ์ •์ ์—์„œ ์ง„์ถœํ•˜๋Š” ๊ฐ„์„ ์ด ๊ณง๋ฐ”๋กœ ์ž๊ธฐ ์ž์‹ ์—๊ฒŒ ์ง„์ž…ํ•˜๋Š” ๊ฒฝ์šฐ ์ž๊ธฐ ๋ฃจํ”„๋ฅผ ๊ฐ€์ ธ๋‹ค ํ•œ๋‹ค. ๋‹ค๋ฅธ ์ •์ ์„ ๊ฑฐ์น˜์ง€ ์•Š๋Š”๋‹ค๋Š”๊ฒƒ์ด ํŠน์ง•
  • ์‚ฌ์ดํด(cycle): ํ•œ ์ •์ ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ๋‹ค์‹œ ํ•ด๋‹น ์ •์ ์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‚ฌ์ดํด์ด ์žˆ๋‹ค ํ‘œํ˜„
    ์„œ์šธ->๋Œ€์ „->๋ถ€์‚ฐ->์„œ์šธ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ˆ ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค
profile
Minthug'life

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