๋ฌธ์
์ด์ง ํธ๋ฆฌ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์ ์ํ(preorder traversal), ์ค์ ์ํ(inorder traversal), ํ์ ์ํ(postorder traversal)ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ฅผ ๋ค์ด ์์ ๊ฐ์ ์ด์ง ํธ๋ฆฌ๊ฐ ์ ๋ ฅ๋๋ฉด,
- ์ ์ ์ํํ ๊ฒฐ๊ณผ : ABDCEFG // (๋ฃจํธ) (์ผ์ชฝ ์์) (์ค๋ฅธ์ชฝ ์์)
- ์ค์ ์ํํ ๊ฒฐ๊ณผ : DBAECFG // (์ผ์ชฝ ์์) (๋ฃจํธ) (์ค๋ฅธ์ชฝ ์์)
- ํ์ ์ํํ ๊ฒฐ๊ณผ : DBEGFCA // (์ผ์ชฝ ์์) (์ค๋ฅธ์ชฝ ์์) (๋ฃจํธ) ๊ฐ ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ด์ง ํธ๋ฆฌ์ ๋ ธ๋์ ๊ฐ์ N(1 ≤ N ≤ 26)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ๋ ธ๋์ ๊ทธ์ ์ผ์ชฝ ์์ ๋ ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๊ฐ ์ฃผ์ด์ง๋ค. ๋ ธ๋์ ์ด๋ฆ์ A๋ถํฐ ์ฐจ๋ก๋๋ก ์ํ๋ฒณ ๋๋ฌธ์๋ก ๋งค๊ฒจ์ง๋ฉฐ, ํญ์ A๊ฐ ๋ฃจํธ ๋ ธ๋๊ฐ ๋๋ค. ์์ ๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ .์ผ๋ก ํํํ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ํ, ๋์งธ ์ค์ ์ค์ ์ํ, ์ ์งธ ์ค์ ํ์ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. ๊ฐ ์ค์ N๊ฐ์ ์ํ๋ฒณ์ ๊ณต๋ฐฑ ์์ด ์ถ๋ ฅํ๋ฉด ๋๋ค.
์ ๋ต
def preorder(node):
if node == '.':
return
print(node, end='')
preorder(tree[node][0])
preorder(tree[node][1])
def inorder(node):
if node == '.':
return
inorder(tree[node][0])
print(node, end='')
inorder(tree[node][1])
def postorder(node):
if node == '.':
return
postorder(tree[node][0])
postorder(tree[node][1])
print(node, end='')
n = int(input())
tree = {}
for _ in range(n):
root, left, right = map(str, input().split())
tree[root] = [left, right]
preorder('A')
print()
inorder('A')
print()
postorder('A')
๊ฐ ์ํ ์์์ ๋ง๋ ์ฌ๊ท ํจ์๋ฅผ ๋ง๋ค์๋ค.
์ ์์ํ : ๋ฃจํธ -> ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ
์ค์์ํ : ์ผ์ชฝ -> ๋ฃจํธ -> ์ค๋ฅธ์ชฝ
ํ์์ํ : ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ -> ๋ฃจํธ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 14503 - ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2021.11.08 |
---|---|
[Python] ๋ฐฑ์ค 1459 - ๊ฑท๊ธฐ (0) | 2021.11.03 |
[Python] ๋ฐฑ์ค 10829 - ์ด์ง์ ๋ณํ (0) | 2021.10.06 |
[Python] ๋ฐฑ์ค 4796 - ์บ ํ (0) | 2021.02.13 |
[Python] ๋ฐฑ์ค 1946 - ์ ์ ์ฌ์ (0) | 2021.02.11 |