본문 바로가기

트리의 순회

(3)
백준 5639 이진 검색 트리 - 파이썬 문제. 풀이. 이진 트리는 루트 기준으로 왼쪽은 루트 값 보다 작은 수들, 오른쪽은 큰 수 이다. 즉 root값을 기준으로 왼쪽 인덱스, 오른쪽 인덱스를 찾아 값을 구하면 된다. 소스코드.
백준 2263 트리의 순회 - 파이썬 풀이. 다음과 같은 트리가 있다하면 순회의 결과는 다음과 같다. 전위 순회 : 0->1->3->7->8->4->9->10->2->5->11->6 중위 순회 : 7->3->8->1->9->4->10->0->11->5->2->6 후위 순회 : 7->8->3->9->10->4->1->11->5->6->2->0 중위와 후위를 살펴보면, 후위의 마지막 요소가 루트 노드인 것을 알 수 있다. 그러면 중위 순회에서 루트 노드를 기준으로 left, right를 나누면 (7, 3, 8, 1, 9, 4, 10), (11, 5, 2 6)으로 나뉘어진다. 이 left, right의 길이만큼 후위 순회에서 나눈다면 (7, 8, 3, 9, 10, 4 ,1), (11, 5, 6, 2) 로 나뉘어진다 다시 후위 순회와 중위 순회를 ..
백준 1991 트리의 순회 - 파이썬 문제. 풀이. 트리의 순회만 안다면 매우 쉽게 풀 수 있다. 전위 순회 = 루트, 왼쪽 , 오른쪽 중위 순회 = 왼쪽, 루트, 오른쪽 후위 순회 = 왼쪽, 오른쪽, 루트 이다. 딕셔너리를 이용하여 풀었다. import sys # 전위순회 def preorder(root): if root !='.': print(root, end='') preorder(tree[root][0]) preorder(tree[root][1]) # 중위순회 def inorder(root): if root !='.': inorder(tree[root][0]) print(root, end='') inorder(tree[root][1]) # 후위순회 def postorder(root): if root !='.': postorder(tr..