ํฐ์คํ ๋ฆฌ ๋ทฐ
์๊ณ ๋ฆฌ์ฆ: Recursion
dirmathfl 2020. 6. 16. 21:16Recursion?
์ฌ๊ท๋ ํน์ ํจ์ ๋ด์์ ํจ์ ์์ ์ ๋ค์ ํธ์ถํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฌ๊ท๋ Stack์ ํน์ฑ์ ๊ทธ๋๋ก ๋ฐ์ํ์ฌ, ๊ฐ์ฅ ์ต๊ทผ์ ํธ์ถ๋ ํจ์ ๋ถํฐ ์ฒ๋ฆฌ๋๋ ๋ฐฉ์์ผ๋ก ์งํ๋๋ค. ์ฌ๊ท๋ฅผ ์ ๋ค๋ฃฐ ์ ์๋ค๋ฉด DFS์ ๋ฐฑํธ๋ํน, ํธ๋ฆฌ ํ์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ๋ ํจ์จ์ ์ผ๋ก ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
์ด์ง ํธ๋ฆฌ ์ํ
๊ทธ๋ฆผ 1๊ณผ ๊ฐ์ ์ด์ง ํธ๋ฆฌ๊ฐ ์์ ๊ฒฝ์ฐ, 3๊ฐ์ง ๋ฐฉ์์ผ๋ก ํธ๋ฆฌ๋ฅผ ์ํํ ์ ์๋ค. ์ฒซ ๋ฒ์งธ๋ ์ ์ ์ํ๋ก 1-2-4-5-3-6-7 ์์๋ก ํธ๋ฆฌ๋ฅผ ์ํํ๋ค. ๋ ๋ฒ์งธ๋ ์ค์ ์ํ๋ก 4-2-5-1-6-3-7 ์์๋ก ํธ๋ฆฌ๋ฅผ ์ํ ํ๋ค. ๋ง์ง๋ง์ผ๋ก ํ์์ํ๋ 4-5-2-6-7-3-1๋ก ์ํํ๋ค. ํธ๋ฆฌ๋ฅผ ์ํํ๋ ๊ฒ์ ์ฌ๊ท ํธ์ถ์ ํตํด์ ๊ตฌํ ํ ์ ์๋ค.
Simple Tree Travel
def tree_travel(num, order):
if num > 7:
return
else:
if order == 'pre':
print(num, end=' ')
tree_travel(num * 2, order)
tree_travel((num * 2) + 1, order)
elif order == 'in':
tree_travel(num * 2, order)
print(num, end=' ')
tree_travel((num * 2) + 1, order)
else:
tree_travel(num * 2, order)
tree_travel((num * 2) + 1, order)
print(num, end=' ')
tree_travel(1, 'pre')
print()
tree_travel(1, 'in')
print()
tree_travel(1, 'post')
- ์ ์ ์ํ(pre)์ธ ๊ฒฝ์ฐ, ์ ๊ทผํ ๋ ธ๋ - left child - right child ์์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- ์ค์ ์ํ(in)์ ๊ฒฝ์ฐ, left child - ์ ๊ทผํ ๋ ธ๋ - right child ์์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- ํ์ ์ํ(post)์ ๊ฒฝ์ฐ left child - right child - ์ ๊ทผํ ๋ ธ๋ ์์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- ์คํ ๊ฒฐ๊ณผ๋ ์์ ์ค๋ช ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ํธ์ถ๋๋ค.
'๐๏ธโโ๏ธ ๊ธฐ๋ฐ ๋ค์ง๊ธฐ > ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ: ์ ๋ ฌ (0) | 2020.06.17 |
---|---|
์๊ณ ๋ฆฌ์ฆ: DFS์ BFS (0) | 2020.06.16 |
์๋ฃ๊ตฌ์กฐ: Linked List (0) | 2020.06.15 |
์๋ฃ๊ตฌ์กฐ: Queue (0) | 2020.06.15 |
์๋ฃ๊ตฌ์กฐ: Stack (0) | 2020.06.15 |