2024. 2. 8. 21:29ใCS - Roadmap.sh/3. Common Algorithms
CS - 3. Common Algorithms - 3.7 Tree - 3.7.1 Pre-Order Traversal
Tree Algorithms
๐กA tree is non-linear and a hierarchical data structure consisting of a collection of nodes such that each node of the tree stores a value and a list of references to other nodes (the “children”).
ํธ๋ฆฌ๋ ๋น์ ํ์ ์ด๋ฉฐ ๋ ธ๋ ๋ชจ์์ผ๋ก ๊ตฌ์ฑ๋ ๊ณ์ธต์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก, ํธ๋ฆฌ์ ๊ฐ ๋ ธ๋๊ฐ ๊ฐ๊ณผ ๋ค๋ฅธ ๋ ธ๋์ ๋ํ ์ฐธ์กฐ ๋ชฉ๋ก("์์")์ ์ ์ฅํฉ๋๋ค.
Pre-Order Traversal
๐กPre-order traversal is a tree traversal algorithm that visits the root node first, then recursively traverses the left subtree, followed by the right subtree.
์ฌ์ ์ํ ํ์(์ ์ ์ํ)์ ๋ฃจํธ ๋ ธ๋๋ฅผ ๋จผ์ ๋ฐฉ๋ฌธํ ๋ค์ ์ผ์ชฝ ํ์ ํธ๋ฆฌ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํ์ํ ๋ค์ ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ๋ฅผ ํ์ํ๋ ํธ๋ฆฌ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์๋ฃ๊ตฌ์กฐ์์ Tree ๋ฅผ ๋ค๋ค๋ดค์ต๋๋ค.
https://parkpakrsu.tistory.com/336
์ด์ ํธ๋ฆฌ์ ๊ด๋ จ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ณด๊ฒ ์ต๋๋ค.
Pre-Order Traversal ์ด๋?
๋จผ์ ํธ๋ฆฌ๋ฅผ ์ ์ ์ํ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๅไฝๅทกๅปป ์ ์, Pre-order, ์์๋ฆฌ ๋ถํฐ ์ํํ๋ค๋ ๋ป์ ๋๋ค.
ํธ๋ฆฌ๋ ๊ทธ๋ํ๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก, ๋ฃจํธ ๋
ธ๋๋ฅผ ๊ฐ์ฅ ๋จผ์ ๋ฐฉ๋ฌธํ ํ, ์ผ์ชฝ ์๋ธํธ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํธ๋ฆฌ์ ๋ชจ๋ ๋
ธ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ฐฉ๋ฌธํ ์ ์์ด, ํธ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๋ณต์ฌํ๊ฑฐ๋ ํธ๋ฆฌ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๋ฑ์ ์์
์ ์ํํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
In Python
์ด์ ํ์ด์ฌ์ ์ฌ์ฉํด Pre-Order Traversal์ ์ด๋ป๊ฒ ๊ตฌํํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def pre_order_traversal(node):
if node is not None:
print(node.value, end=" ")
pre_order_traversal(node.left)
pre_order_traversal(node.right)
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)
pre_order_traversal(root) # 1 2 4 5 3 6 7
์์ ๊ทธ๋ํ๋ฅผ ์ ์ ์ํ ํ๋ฉด ์ด๋ ์ต๋๋ค.
1-2,3 ์์ ๋ฎ์ 2๋ฒ๋ ธ๋๋ก ์ง์ (1-2),
2-4,5 ์์ ๋ฎ์๋ ธ๋ ์์๋๋ก 2-4, ๊ทธ๋ค์ 2-5, ๋ ๋ด๋ ค๊ฐ ๋ ธ๋๊ฐ ์์ผ๋ฏ๋ก ๋๋์๊ฐ๋๋ค.
1-3 ์ง์ ํ 3-6,7 ๋ ์์ ๋ง์ฐฌ๊ฐ์ง๋๋ก ํ์.
๋ฐ๋ผ์ 1,2,4,5,3,6,7 ์์๋๋ก ํ์ํ๊ฒ ๋ฉ๋๋ค.
์ฐธ๊ณ
์ ๋ณดํต์ ๊ธฐ์ ์ฉ์ดํด์ค
http://www.ktword.co.kr/test/view/view.php?no=5560
'CS - Roadmap.sh > 3. Common Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3.7.3 Post-Order Traversal (1) | 2024.02.10 |
---|---|
3.7.2 In-Order Traversal(์ค์ ์ํ) (0) | 2024.02.09 |
3.6.4 Primโs Algorithm (ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ) (0) | 2024.02.07 |
3.6.3 Ford Fulkerson algorithm(ํด๋ํ์ปค์จ ์๊ณ ๋ฆฌ์ฆ) (1) | 2024.02.06 |
3.6.2 Kruskalโs algorithm (ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ) (1) | 2024.02.05 |