-
02. ์๋ฃ๊ตฌ์กฐ trees: tree traversal, binary trees, binary expression trees
2020. 2. 25.
02. trees: tree traversal, binary trees, binary expression trees
ํธ๋ฆฌ, ํธ๋ฆฌํ์, ์ด์ง ํธ๋ฆฌ, ์ด์ง ํ์ ํธ๋ฆฌ, ํธ๋ฆฌ ์ํ, ์ ์ ์ํ, ์ค์ ์ํ, ํ์ ์ํ
0. tree
ํธ๋ฆฌ๋ ๊ทธ๋ํ์ ํ ์ข ๋ฅ๋ค.
์ด๋ค ๋ ธ๋๋ค์ ์งํฉ์ผ๋ก ๋ ธ๋๋ค์ ๊ฐ ์๋ก ๋ค๋ฅธ ์์์ ๊ฐ์ง๋ฉฐ ์ด ๋ ๊ฐ ๋ ธ๋๋ ์ฌ์ฌ์ฉ ๋์ง ์๋๋ค.
์๋ก ๋ค๋ฅธ ์์์ ๋ ๋ ธ๋์ ๋ํด ๋ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒฝ๋ก๋ ํ๋์ด๋ฉฐ, ์ฌ์ดํด, ์ฆ ๋น๋น ๋๊ฒ ์ค๊ณ๋ ๋ ธ๋ ์งํฉ์ด ์กด์ฌํ์ง ์๊ณ , ๋ฐ๋์ ํ๋์ root(๋ถ๋ชจ ๋ ธ๋๊ฐ ์กด์ฌํ์ง ์๋ ๋ ธ๋, ๋งจ ๊ผญ๋๊ธฐ)๊ฐ ์กด์ฌํ๋ค.
๋ค์์ tree์ ๋ํ ์ฉ์ด ์ ๋ฆฌ๋ค.
- ๋ ธ๋(node) : ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋, ๊ทธ๋ํ์ ์ ์ ์ผ๋ก, value๊ฐ๊ณผ ๋ถ๋ชจ ์์์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ์ฃ์ง(edge, ๊ฐ์ง) : ๋ ธ๋๋ค์ ์ฐ๊ฒฐํ๋ ๊ฐ์ ์ผ๋ก ๋ถ๋ชจ ๋ ธ๋์ ์์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ค.
- ๋ฃจํธ(root node) : ๊ฐ์ฅ ์์ ๋ ธ๋๋ก ๋ถ๋ชจ๋ฅผ ๊ฐ์ง์ง ์๋๋ค.
- ๋ฆฌํ(leaf node, ๋จ๋ง ๋ ธ๋) : ๊ฐ์ฅ ํ์ ๋ ธ๋๋ก ์์์ ๊ฐ์ง์ง ์๋๋ค.
- ๋ถ๋ชจ ๋ ธ๋ : ์ด๋ค ๋ ธ๋์์ ์์ ๊ณผ ์ธ์ ํ ๋ ธ๋๋ค ์ค ๋ฃจํธ ๋ ธ๋๋ก ํฅํ๋ ๋ ธ๋.
- ์์ ๋ ธ๋ : ์ด๋ค ๋ ธ๋์์ ์์ ๊ณผ ์ธ์ ํ ๋ ธ๋๋ค ์ค ๋ฃจํธ ๋ ธ๋์ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ํฅํ๋ ๋ ธ๋.
- ํ์ ๋ ธ๋ : ๊ฐ์ ๋ถ๋ชจ๋ฅผ ๊ฐ์ง๋ ์์ ๋ ธ๋๋ค์ ๋งํ๋ค.
- ๊น์ด(depth) : ๋ถ๋ชจ์์ ์์์ผ๋ก ์ด๋ํ ๋, ๊น์ด๊ฐ 1 ์ฆ๊ฐํ๋ค. root node์ ๊น์ด๋ 0์ด๋ค.
- ๊ธธ์ด(length) : ์์์ ๋ ๋ ธ๋๋ฅผ ์์, ๋์ฐฉ์ผ๋ก ํ๋ ๊ฒฝ๋ก์์ ๊ฑฐ์น๊ฒ ๋๋ ๋ ธ๋์ ์
- ์ฐจ์(degree) : ์์ ๋ ธ๋์ ๊ฐ์
ํธ๋ฆฌ์ ์ข ๋ฅ๋ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋ ์ ์๋๋ฐ, ์ด์ง ํธ๋ฆฌ์ ์ด์ง ํธ๋ฆฌ๊ฐ ์๋ ํธ๋ฆฌ๋ค.(binary tree and non-binary tree)
1. tree traversal
ํธ๋ฆฌ ์ํ. ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๊ฐ๊ฐ์ ๋ ธ๋๋ฅผ ํ ๋ฒ์ฉ, ์ฒด๊ณ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐฉ๋ฌธํ๋ ๊ณผ์ ์ ๋งํ๋ค. ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ ์์์ ๋ฐ๋ผ ์ ์ ์ํ, ์ค์ ์ํ, ํ์ ์ํ, ๋ ๋ฒจ ์์ ์ํ๋ก ๋๋ ์ ์๋ค. ์ฌ๊ท๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฝ๊ฒ ๋ํ๋ผ ์ ์๋ค.
1) ์ ์ ์ํ (preorder)
๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ค -> ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ์ ์ ์ํํ๋ค. -> ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ์ ์ ์ํํ๋ค.
์ ์ ์ํ๋ ๊น์ด ์ฐ์ ์ํ๋ผ๊ณ ๋ ํ๋ค.(depth-first traversal) ๊น์ด ์ฐ์ ํ์(DFS)์ ๊ฐ๋ค๊ณ ํ ์ ์๋ค.
2) ์ค์ ์ํ (Inorder)
์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ์ค์ ์ํํ๋ค.->๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ค.->์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ์ค์ ์ํํ๋ค.
์ค์ ์ํ๋ ๋์นญ ์ํ๋ผ๊ณ ๋ ํ๋ค.(symmetric) ์ด์ง ํธ๋ฆฌ์์๋ง ํ ์ ์๋ ์ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
3) ํ์ ์ํ (postorder)
์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ํ์ ์ํํ๋ค.->์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ํ์ ์ํํ๋ค.->๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ค.
4) ๋ ๋ฒจ ์์ ์ํ
๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฎ์ ๋ ๋ฒจ๋ถํฐ ์ฐจ๋ก๋๋ก ์ํํ๋ค. ๋๋น ์ฐ์ ์ํ๋ผ๊ณ ๋ ํ๋ค.(breadth-first traversal) ๋๋น ์ฐ์ ํ์(BFS)๊ณผ๋ ๊ฐ๋ค๊ณ ํ ์ ์๋ค.
2. binary trees
์ด์ง ํธ๋ฆฌ๋ ๊ฐ ๋ ธ๋์ ๋ํด์ 2๊ฐ ์ดํ์ ์์์ ๊ฐ์ง๊ณ , ์ด์งํธ๋ฆฌ๊ฐ ์๋ ํธ๋ฆฌ๋ ์์ ๊ฐ์์ ๋ํ ์ ํ์ด ์๋ค.
non-binary tree์ ๊ฐ์ฅ ๋ํ์ ์ธ ์ฌ์ฉ์ฒ์ธ trie ์๋ฃ๊ตฌ์กฐ๋ ํ์ ๋ค๋ฃจ๊ฒ ๋ค.(ch 7์์)
binary tree์ค ๊ฐ์ฅ ์ ๋ช ํ ์๊ณ ๋ฆฌ์ฆ์ binary-search-tree(BST)๋ค.
BST ๋ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ๋ฃจํธ๋ฅผ ์์์ผ๋ก ๊ฐ์ง๋ฉฐ ์ด๋ ๋ฌด์กฐ๊ฑด ์ผ์ชฝ ์๋ธํธ๋ฆฌ <= ์์ <= ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ๊ฐ์ ๊ฐ์ง๋ ํํ๋ค. ์ฆ, ์ ๋ ฌ(?)์ด ๋์ด์๋ ์ํ๋ค.
๊ทธ๋์ ์๋ฃ ์ ๋ ฅ, ์ญ์ , ํ์ ๋ชจ๋ ์๊ฐ๋ณต์ก๋๊ฐ O(log N)์ด๋ค. ๋ ์์ธํ ๋ด์ฉ์ ch3์์ ๋ค๋ฃจ๊ฒ ๋ค.
(binary tree ์ฝ๋ ๋ฃ๊ธฐ)
3. binary expression trees
https://en.wikipedia.org/wiki/Binary_expression_tree
reference
https://ko.wikipedia.org/wiki/%ED%8A%B8%EB%A6%AC_%EC%88%9C%ED%9A%8C
๋ถ์ ๋ชฉ์ ์ ๋ชฉ 3์ผ๋ก
๊ธ๊ผด์ ๋ณธ๊ณ ๋ L
'๐STUDY > ๐พ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
01. ์๋ฃ๊ตฌ์กฐ lists: array, structure, linked list, stack, queue (0) 2020.02.22 00. ์๋ฃ๊ตฌ์กฐ (0) 2020.02.21 ๋๊ธ