ํธ๋ฆฌ์ ํ์(์ํ)
ํธ๋ฆฌ๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ด 4๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
1. ์ค์ ํ์ (Inorder traversal)
2. ์ ์ ํ์ (Preorder traversal)
3. ํ์ ํ์ (Postorder traversal)
4. ๋ ๋ฒจ ์์ ํ์ (Level order traversal)
์ด๋ ์ ์, ์ค์, ํ์ ํ์์ ๊ธฐ์ค์ ๋ฃจํธ(Root)๋ ธ๋ ์ ๋๋ค.
์ค์ ํ์(Inorder Traversal)
๋ค์๊ณผ ๊ฐ์ ์์๋ก ํ์ํฉ๋๋ค.
1. ์ผ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ค์ ํ์ํ์ฌ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค.
2. ๋ฃจํธ๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค.
3. ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ค์ ํ์ํ์ฌ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค.
์ฆ ๋ฃจํธ๊ฐ ํ์ ์์์ ์ค๊ฐ์ ์์นํฉ๋๋ค.
์ ์ ํ์(Preorder Traversal)
๋ค์๊ณผ ๊ฐ์ ์์๋ก ํ์ํฉ๋๋ค.
1. ๋ฃจํธ๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค.
2. ์ผ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ค์ ํ์ํ์ฌ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค.
3. ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ค์ ํ์ํ์ฌ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค.
์ฆ ๋ฃจํธ๊ฐ ๋งจ ์ฒ์์ ํ์๋ฉ๋๋ค.
ํ์ ํ์(Postorder Traversal)
๋ค์๊ณผ ๊ฐ์ ์์๋ก ํ์ํฉ๋๋ค.
1. ์ผ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ค์ ํ์ํ์ฌ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค.
2. ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ค์ ํ์ํ์ฌ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค.
3. ๋ฃจํธ๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค.
์ฆ ๋ฃจํธ๊ฐ ๋งจ ๋ง์ง๋ง์ ํ์๋ฉ๋๋ค.
์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ 3๊ฐ์ง ํ์์ ์ฌ๊ทํจ์๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ Stack ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
(์ฌ๊ทํจ์๊ฐ ๊ฐ์ฅ ํธํ๊ณ ์ฝ์ต๋๋ค.)
๋ ๋ฒจ ์์ ํ์ (Level Order Traversal)
ํธ๋ฆฌ์ ๋ ๋ฒจ ์์ผ๋ก, ๋์ผํ ๋ ๋ฒจ์ ๊ฒฝ์ฐ ์ผ์ชฝ๋ถํฐ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด๋ Queue ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ฉด ํธํ๊ฒ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ๊ตฌํํฉ๋๋ค.
1. Root ๋ ธ๋๋ฅผ Queue์ ์ฝ์ ํฉ๋๋ค.
2. Queue์์ ๋ ธ๋๋ฅผ ํ๋ ๊บผ๋ ๋๋ค.
3. ๊บผ๋ธ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ ํฉ๋๋ค.
4. ๊บผ๋ธ ๋ ธ๋์ ๋ชจ๋ ์์๋ค(Children)์ Queue์ ์ฝ์ ํฉ๋๋ค.
2~4์ ๊ณผ์ ์ Queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
'๐ฅ Computer Science > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] - ์ด์ง ๊ฒ์ ํธ๋ฆฌ (Binary Search Tree - BST) (0) | 2022.06.05 |
---|---|
[์๋ฃ๊ตฌ์กฐ] - ํธ๋ฆฌ(Tree)[5] - ์ด์ง ํธ๋ฆฌ์ ๊ตฌํ (0) | 2022.06.05 |
[์๋ฃ๊ตฌ์กฐ] - ํธ๋ฆฌ(Tree)[3] - ์ด์ง ํธ๋ฆฌ(Binary Tree) (0) | 2022.06.05 |
[์๋ฃ๊ตฌ์กฐ] - ํธ๋ฆฌ(Tree)[2] - ํธ๋ฆฌ์ ํํ (0) | 2022.06.04 |
[์๋ฃ๊ตฌ์กฐ] - ํธ๋ฆฌ(Tree)[1] - ํธ๋ฆฌ์ ์ ์์ ์ฉ์ด (0) | 2022.06.04 |