Tree
Last updated
Last updated
ํธ๋ฆฌ(tree)๋ ์ฌ์ดํด์ด ์๋ ๊ทธ๋ํ๋ก ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ(๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์์๋ ๊ด๊ณ๊ฐ ์๋ค๋ ๊ฒ)๋ฅผ ๋ํ๋ด๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์ ์ (node)์ ๊ฐ์ : V
๊ฐ์ (edge)์ ๊ฐ์ : V-1
๊ทธ๋ ๋ค๋ฉด ์ ์ ์ด V๊ฐ ๊ฐ์ ์ด V-1๊ฐ๋ผ๋ฉด ํธ๋ฆฌ์ผ๊น? No! ๋ชจ๋ ์ ์ ์ด ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด tree์ด๋ค.
ํธ๋ฆฌ๋ 1:n ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ ๋น์ ํ ๊ตฌ์กฐ์ด๋ค.
( ์์ ๊ทธ๋ฆผ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช )
์ ์ /๋ ธ๋(node) : ํธ๋ฆฌ์ ๊ตฌ์ฑ์์( A, B, C, D, E, F, G, H, I, J )
๋ฃจํธ(root) : ๋ถ๋ชจ๊ฐ ์๋ ๋ ธ๋, ํธ๋ฆฌ์ ์์ ๋ ธ๋ ( A )
๊ฐ์ (edge, link) : ๋ ธ๋์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ์ (A,B), (A,C), ...
์๋ธํธ๋ฆฌ(subtree) : ํ๋์ ๋ ธ๋์ ๊ทธ ๋ ธ๋์ ์์์ผ๋ก ์ด๋ฃจ์ด์ง ํธ๋ฆฌ
๋ถ๋ชจ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ๋งํฌ๋ฅผ ๋์ด ์์ฑ๋๋ ํธ๋ฆฌ์ด๋ค.
๊ฐ ๋ ธ๋๋ ์์ ๋ ธ๋์ ๊ฐ์๋งํผ ์๋ธํธ๋ฆฌ๋ฅผ ๊ฐ๋๋ค.
ํ์ ๋ ธ๋(sbling node) : ๋ถ๋ชจ๋ ธ๋๊ฐ ๊ฐ์ ์์ ๋ ธ๋๋ค
B-C , D-E, F-G, H-I
์กฐ์๋ ธ๋( ancestor ) : ๊ฐ์ ์ ๋ฐ๋ผ ๋ฃจํธ ๋ ธ๋ ๊ฒฝ๋ก์ ์๋ ๋ชจ๋ ๋ ธ๋๋ค
H์ ์กฐ์๋ ธ๋ : D, B, A
์์๋ ธ๋( descendants ) : ์๋ธํธ๋ฆฌ์ ์๋ ํ์ ๋ ๋ฒจ์ ๋ ธ๋
B์ ์์๋ ธ๋ : D, E, H, I, J
๋ ๋ฒจ(level) : ํธ๋ฆฌ์ ๊ฐ ์ธต์ ๋ฒํธ(๋ฃจํธ์ level์ 0์ผ๋ก ํ๋ ๊ฒฝ์ฐ์ 1๋กํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.)
๊น์ด(depth) : ๋ฃจํธ์์๋ถํฐ ๊ฑฐ๋ฆฌ
root์์๋ถํฐ ํด๋น๋ ธ๋๊น์ง์ edge or node ๊ฐ์
๋์ด(height) : ๋จ๋ง๋ ธ๋์์ ๋ถํฐ ๊ฑฐ๋ฆฌ
๋ ธ๋์ ๋์ด : ๋ ธ๋์์ ๋จ๋ง๋ ธ๋์ ์ด๋ฅด๋ edge์ ๊ฐ์
ํธ๋ฆฌ์ ๋์ด : ๊น์ด ์ค ๊ฐ์ฅ ํฐ ๊ฐ
Empty(null) tree์ height = -1 (์๋ํ๋ฉด height๋ ํฌ์ธํฐ๊ฐ ์๋๋ผ ์ซ์๋ก ํํํ๊ธฐ ๋๋ฌธ์!)
Single-element tree์ height = 0
์ฐจ์(degree) : ๋ ธ๋๊ฐ ๊ฐ์ง๊ณ ์๋ ์์ ๋ ธ๋์ ๊ฐ์
A์ degree : 3 / B์ degree : 2
ํธ๋ฆฌ์ ์ฐจ์ : ํธ๋ฆฌ์ ์๋ ๋ ธ๋์ ์ฐจ์ ์ค ๊ฐ์ฅ ํฐ ๊ฐ
๋จ๋ง๋ ธ๋(terminal, external, leaf node) : degree / height๊ฐ 0์ธ ๋ ธ๋, ์์๋ ธ๋๊ฐ ์๋ ๋ ธ๋์ด๋ค.
๋น๋จ๋ง๋ ธ๋(nonterminal, internal node) : ์ ์ด๋ ํ๋์ ์์์ ๊ฐ์ง๋ ๋ ธ๋
ํฌ๋ฆฌ์คํธ(forest) : ์๋ธํธ๋ฆฌ์ ์งํฉ
ํธ๋ฆฌ A์์ A๋ฅผ ์ ๊ฑฐํ๋ฉด ์์๋ ธ๋ B, C์ ๋ํ ์๋ธํธ๋ฆฌ๊ฐ ์๊ธฐ๊ณ , ์ด๋ค์ ์งํฉ์ forest๊ฐ๋๋ค.
Operations | Times |
size, isEmpty | O(1) |
elements, nodes | O(n) |
replace | O(1) |
root, parent | O(1) |
children(v) | O(Cv) |
isInternal, isExternal, isRoot | O(1) |
๋ชจ๋ ์ฐ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ n๋ฒ ์ด๋ด์ ๋๋์ ์์ฒญ ๋น ๋ฅธ ๊ตฌ์กฐ์ด๋ค.
non-binary tree์ ๋ ธ๋๋ element, parent node, children์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ตฌ์กฐ์ด๋ค.
์์์ ์ต๋ 2๊ฐ๋ง ๊ฐ์ง๊ณ ์๋ ํธ๋ฆฌ๋ฅผ ์ด์งํธ๋ฆฌ(binary tree)๋ผ๊ณ ํ๋ค.
๊ฐ์ด ๊ฐ๋๋ผ๋ ์ผ์ชฝ ํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ํธ๋ฆฌ๋ ๋ค๋ฅธ ํธ๋ฆฌ๋ก ๋ณธ๋ค.
์์์ด ์ต๋ 2๊ฐ์ด๋ฏ๋ก ๋ชจ๋ ๋ ธ๋์ degree๋ 2์ดํ์ด๋ค. (=subtree ์ต๋ 2๊ฐ)
๊ตฌํ์ด ํธ๋ฆฌํ๋ค.
Decision tree / ์ฐ์ฐ๋ฐฉ์ / Search์ ๋ง์ด ์ฌ์ฉ
๋ ธ๋์ ๊ฐ์๊ฐ n๊ฐ์ด๋ฉด, ๊ฐ์ ์ ์๋ n-1๊ฐ์ด๋ค.
๋์ด(height)๊ฐ h์ธ ์ด์งํธ๋ฆฌ์ ์์ ๋ ธ๋ ์
์ต๋ 2^h -1
์ต์ h
n๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ ์ด์งํธ๋ฆฌ์ ๋์ด
์ต๋ n
์ต์ log(n+1)
๋ชจ๋ ๋ ธ๋๊ฐ 0๊ฐ ๋๋ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๋ ํธ๋ฆฌ
๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ๊ณ ๋ชจ๋ ๋ ๋ฒจ์ด ์์ ํ ์ฑ์์ ธ ์์ผ๋ฉฐ, ๋ง์ง๋ง ๋ ๋ฒจ์ ๋ชจ๋ ๋ ธ๋๋ ๊ฐ๋ฅํ ํ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ค. ๋ง์ง๋ง ๋ ๋ฒจ h์์ 1๋ถํฐ 2h-1 ๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค. ๋ ๋ค๋ฅธ ์ ์๋ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์ ๋ ธ๋๊ฐ (์๋ง๋ ๋ชจ๋) ์ ๊ฑฐ๋ ํฌํ ์ด์ง ํธ๋ฆฌ๋ค. ์ด๋ค ์ ์ ์๋ ์์ (complete)๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํด ์์์ ์ ์ํ ํฌํ ์ด์ง ํธ๋ฆฌ ๋์ , ์ด๋ฌํ ์ข ๋ฅ์ ํธ๋ฆฌ๋ฅผ ๊ฑฐ์ ์์ ํ(almost complete) ์ด์ง ํธ๋ฆฌ ๋๋ ๋์ฒด๋ก ์์ ํ(nearly complete) ์ด์ง ํธ๋ฆฌ๋ผ๊ณ ํ๋ ๊ฒฝ์ฐ๋ ์๋ค. ์์ ์ด์ง ํธ๋ฆฌ๋ ๋ฐฐ์ด์ ์ฌ์ฉํด ํจ์จ์ ์ผ๋ก ํํ ๊ฐ๋ฅํ๋ค.(์ํคํผ๋์)
๋ชจ๋ ๋ด๋ถ ๋ ธ๋๊ฐ ๋ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ฉฐ ๋ชจ๋ ์ ๋ ธ๋๊ฐ ๋์ผํ ๊น์ด ๋๋ ๋ ๋ฒจ์ ๊ฐ๋๋ค.
ํ์ชฝ์ผ๋ก ๊ธฐ์ธ์ด์ง ํธ๋ฆฌ์ด๋ค.
ํธ๋ฆฌ์ ๋ชจ๋ ๋ ธ๋๋ ๋ถ๋ชจ๋ฅผ ํ๋ ๋๋ 0๊ฐ๋ง ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ๋ง ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ์ ์ฅํ ์ ์๋ค.
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
parent[i] | 0 | -1 | 1 | -1 | 3 | 1 | -1 | 6 | 3 |
์ฅ์ : ํ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๋ฐ๋ก ์ฐพ์ ์ ์๋ค.
๋จ์ : ์์๋ ธ๋๋ฅผ ์ฐพ๊ธฐ ํ๋ค๋ค.
์ด์ง ํธ๋ฆฌ์ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด๋ก ํํํ ์ ์๋ค.
๋ถ๋ชจ์ ๋
ธ๋๊ฐ x์ธ ๊ฒฝ์ฐ์ ์์๋
ธ๋๋ ์ผ์ชฝ, ์ค๋ฅธ์ชฝ (2*x
, 2*x+1
) ๋ก ๋ํ๋ด๋ฉด๋๋ค. (์ฃผ์์ฌํญ index๋ 1๋ถํฐ ์์!ํ๋ค๋ ์ ์ ์ฃผ์ํด์ผํ๋ค.)
๋ ธ๋ x์ ๋ถ๋ชจ ๋ ธ๋ ์ธ๋ฑ์ค๋ x/2๋ก ์ ์ ์๋ค.
๋ค์ (a)์ ์ด๋ฏธ์ง์ฒ๋ผ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์์ ๋ 5๊ฐ์๋ ธ๋๋ฅผ ์ ์ฅํ๊ธฐ์ํด์ ๋ฐฐ์ด ํฌ๊ธฐ๊ฐ 10์ด ํ์ํ๋ฏ๋ก ๋นํจ์จ์ ์ด๋ค.
์ด๋ฐ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ perfect binary ํธ๋ฆฌ์์ ํจ์จ์ ์ด๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ ์ฅํ ์ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ๋ ๋ง์ด ์ฌ์ฉํ์ง ์๋๋ค.
ํฌ์ธํฐ๋ฅผ ์ด์ฉํ์ฌ ๋ถ๋ชจ๋ ธ๋๊ฐ ์์๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
ํธ๋ฆฌ์ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ ์์์ด๋ค.
๊ทธ๋ํ(11. Graph )์ ๊ฒฝ์ฐ์๋ DFS์ BFS ๊ฐ ์์๋ค. ํธ๋ฆฌ์์๋ ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ง๋ง, ํธ๋ฆฌ์์๋ง ์ฌ์ฉํ ์ ์๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. ์ธ ๋ฐฉ๋ฒ์ ์ฐจ์ด๋ ๋ ธ๋ ๋ฐฉ๋ฌธ์ ์ธ์ ํ๋์ ์ฐจ์ด ์ด๋ค.
๋ ธ๋ ๋ฐฉ๋ฌธ(pre)
์ผ์ชฝ ์์ ๋ ธ๋๋ฅผ ๋ฃจํธ๋ก ํ๋ ์๋ธ ํธ๋ฆฌ ํ๋ฆฌ์ค๋
์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ฅผ ๋ฃจํธ๋ก ํ๋ ์๋ธ ํธ๋ฆฌ ํ๋ฆฌ์ค๋
ํ๋ฆฌ ์ค๋๋ ๊ทธ๋ํ์ DFS์ ์์๊ฐ ๊ฐ๋ค.
์ผ์ชฝ ์์ ๋ ธ๋๋ฅผ ๋ฃจํธ๋ก ํ๋ ์๋ธ ํธ๋ฆฌ ํ๋ฆฌ์ค๋
๋ ธ๋ ๋ฐฉ๋ฌธ(in)
์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ฅผ ๋ฃจํธ๋ก ํ๋ ์๋ธ ํธ๋ฆฌ ํ๋ฆฌ์ค๋
Binary Search Tree์์ Delete ๊ตฌํ์ ์ฃผ๋ก ์ฌ์ฉ
์ผ์ชฝ ์์ ๋ ธ๋๋ฅผ ๋ฃจํธ๋ก ํ๋ ์๋ธ ํธ๋ฆฌ ํ๋ฆฌ์ค๋
์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ฅผ ๋ฃจํธ๋ก ํ๋ ์๋ธ ํธ๋ฆฌ ํ๋ฆฌ์ค๋
๋ ธ๋ ๋ฐฉ๋ฌธ(post)
file ๋๋ผ์ด๋ธ์์ ๋๋ผ์ด๋ธ ์ฉ๋์ ๊ณ์ฐํ ๋ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ
์ด์งํธ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ preorder์ postorder๋ง ๊ตฌํํ ์ ์๋ค.
์ฒซ์งธ ์ค์๋ ์ด์ง ํธ๋ฆฌ์ ๋
ธ๋์ ๊ฐ์ N(1โคNโค26)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ๋
ธ๋์ ๊ทธ์ ์ผ์ชฝ ์์ ๋
ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋๊ฐ ์ฃผ์ด์ง๋ค. ๋
ธ๋์ ์ด๋ฆ์ A๋ถํฐ ์ฐจ๋ก๋๋ก ์๋ฌธ์ ๋๋ฌธ์๋ก ๋งค๊ฒจ์ง๋ฉฐ, ํญ์ A๊ฐ ๋ฃจํธ ๋
ธ๋๊ฐ ๋๋ค. ์์ ๋
ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ .
์ผ๋ก ํํ๋๋ค.
ํธ๋ฆฌ์ ํ์์ DFS/BFS ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ํ ์ ์๋ค. (13. DFS์ BFS ์ฐธ์กฐ)
ํธ๋ฆฌ๋ ์ฌ์ดํด์ด ์๋ ๊ทธ๋ํ์ด๊ธฐ ๋๋ฌธ์ ์์์ ๋ ์ ์ ์ฌ์ด์ ๊ฒฝ๋ก๋ 1๊ฐ์ด๋ค. ๋ฐ๋ผ์ BFS ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์๋ค.
๋ฃจํธ ์๋ ํธ๋ฆฌ๊ฐ ์ฃผ์ด์ง๋ค. ์ด ๋, ํธ๋ฆฌ์ ๋ฃจํธ๋ฅผ 1์ด๋ผ๊ณ ์ ํ์ ๋, ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ : ์ฒซ์งธ ์ค์ ๋ ธ๋์ ๊ฐ์ N (2 โค N โค 100,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N-1๊ฐ์ ์ค์ ํธ๋ฆฌ ์์์ ์ฐ๊ฒฐ๋ ๋ ์ ์ ์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ : ์ฒซ์งธ ์ค๋ถํฐ N-1๊ฐ์ ์ค์ ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋ ๋ฒํธ๋ฅผ 2๋ฒ ๋ ธ๋๋ถํฐ ์์๋๋ก ์ถ๋ ฅํ๋ค.