2024. 2. 10. 07:50ใCS - Roadmap.sh/3. Common Algorithms
CS - 3. Common Algorithms - 3.7 Tree - 3.7.3 Post-Order Traversal
Post-Order Traversal
๐กPost-order traversal is a type of tree traversal that visits the left subtree, then the right subtree, and finally the root node. This is the opposite of pre-order traversal, which visits the root node first, then the left subtree, and finally the right subtree.
ํ์ ์์ ํธ๋ฆฌ์ ์ผ์ข ์ผ๋ก ์ผ์ชฝ ๋ถ๋ถ ํธ๋ฆฌ, ์ค๋ฅธ์ชฝ ๋ถ๋ถ ํธ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ๋ฃจํธ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค. ์ด๊ฒ์ ๋ฃจํธ ๋ ธ๋๋ฅผ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ ์ผ์ชฝ ๋ถ๋ถ ํธ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ค๋ฅธ์ชฝ ๋ถ๋ถ ํธ๋ฆฌ๋ฅผ ๋ฐฉ๋ฌธํ๋ ์ ์ ์ํ์ ๋ฐ๋์ ๋๋ค.
์ด์ง ํธ๋ฆฌ์์์ ์ํ ๋ฐฉ๋ฒ ์ค ํ๋์ธ Post-Order Traversal์ ์ด๋ฆ ๊ทธ๋๋ก 'ํ์ ์ํ'๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋
ธ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ๋ฐฉ๋ฌธํฉ๋๋ค
์ผ์ชฝ ํ์ ํธ๋ฆฌ -> ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ -> ๋ฃจํธ ๋
ธ๋. ์ด ์์๋๋ก ๋ฐฉ๋ฌธํ๊ฒ ๋๋ฉด, ๋
ธ๋์ ๊ฐ๋ค์ด 'ํ์' ์์๋ก ๋ํ๋๊ฒ ๋ฉ๋๋ค.
In Python
Post-Order Traversal์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
class Node:
def __init__(self, key):
self.left = None
self.right = None
self.val = key
def printPostorder(root):
if root:
printPostorder(root.left)
printPostorder(root.right)
print(root.val)
์ ์์๋ฐ๋ผ ์์๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
ํ์ ์ํ์ ์ ์์ ๋ฐ๋ผ์ ์ด๋ค ์ ์ฐจ์ ์ํด์ ๊ฒฐ๊ณผ๊ฐ ๋์๋์ง ์์๋ณด์.
1. ์ฒ์์๋ ๋ฃจํธ ๋
ธ๋์ธ 1์์ ์์ํฉ๋๋ค. ํ์ง๋ง Post-Order Traversal์ ๋ฃจํธ ๋
ธ๋๋ฅผ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ฐฉ๋ฌธํ๋ฏ๋ก, ๋จผ์ ์ผ์ชฝ ํ์ ํธ๋ฆฌ์ธ 2๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค.
2. ๋
ธ๋ 2์์ ๋ ๋ค์ Post-Order Traversal์ ์ํํ๊ฒ ๋ฉ๋๋ค. ์ผ์ชฝ ํ์ ํธ๋ฆฌ์ธ 4๋ฅผ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ์ด ๋
ธ๋๋ ๋ ์ด์ ํ์ ๋
ธ๋๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ถ๋ ฅํฉ๋๋ค. (4)
3. ๊ทธ ๋ค์ ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ์ธ 5๋ฅผ ๋ฐฉ๋ฌธํ๊ณ , ์ด ๋
ธ๋ ์ญ์ ํ์ ๋
ธ๋๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ถ๋ ฅํฉ๋๋ค. (4, 5)
4. ์ด์ ๋
ธ๋ 2์ ์ผ์ชฝ ํ์ ํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ๋ฅผ ๋ชจ๋ ๋ฐฉ๋ฌธํ์ผ๋ฏ๋ก, ๋
ธ๋ 2๋ฅผ ์ถ๋ ฅํฉ๋๋ค. (4,5,2)
5. ์ด์ ๋ฃจํธ ๋
ธ๋ 1์ ์ผ์ชฝ ํ์ ํธ๋ฆฌ๋ฅผ ๋ชจ๋ ๋ฐฉ๋ฌธํ์ผ๋ฏ๋ก, ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ์ธ 3์ ๋ฐฉ๋ฌธํฉ๋๋ค. (4,5,2)
6. ๋
ธ๋ 3์์ ๋ ๋ค์ Post-Order Traversal์ ์ํํ๊ฒ ๋ฉ๋๋ค. ์ผ์ชฝ ํ์ ํธ๋ฆฌ์ธ 6์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ์ด ๋
ธ๋๋ ๋ ์ด์ ํ์ ๋
ธ๋๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ถ๋ ฅํฉ๋๋ค. (4,5,2,6)
7. ๊ทธ ๋ค์ ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ์ธ 7์ ๋ฐฉ๋ฌธํ๊ณ , ์ด ๋
ธ๋ ์ญ์ ํ์ ๋
ธ๋๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ถ๋ ฅํฉ๋๋ค. (4,5,2,6,7)
8. ์ด์ ๋
ธ๋ 3์ ์ผ์ชฝ ํ์ ํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ๋ฅผ ๋ชจ๋ ๋ฐฉ๋ฌธํ์ผ๋ฏ๋ก, ๋
ธ๋ 3์ ์ถ๋ ฅํฉ๋๋ค. (4,5,2,6,7,3)
9. ๋ง์ง๋ง์ผ๋ก, ๋ฃจํธ ๋
ธ๋ 1์ ์ผ์ชฝ ํ์ ํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ๋ฅผ ๋ชจ๋ ๋ฐฉ๋ฌธํ์ผ๋ฏ๋ก, ๋ฃจํธ ๋
ธ๋ 1์ ์ถ๋ ฅํฉ๋๋ค.
(4,5,2,6,7,3,1)
'CS - Roadmap.sh > 3. Common Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3.8.2 Solving n Queen Problem (N ํธ ๋ฌธ์ ) (1) | 2024.02.10 |
---|---|
3.8 Back Tracking Algorithm(์ญ์ถ์ ์๊ณ ๋ฆฌ์ฆ) - 3.8.1 Finding Hamiltonian Paths(ํด๋ฐํด ๊ฒฝ๋ก) (2) | 2024.02.10 |
3.7.2 In-Order Traversal(์ค์ ์ํ) (0) | 2024.02.09 |
3.7.1 Pre-Order Traversal(์ ์ ์ํ) (0) | 2024.02.08 |
3.6.4 Primโs Algorithm (ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ) (0) | 2024.02.07 |