728x90
https://www.acmicpc.net/problem/5639
5639번: 이진 검색 트리
트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다
www.acmicpc.net
Node의 자료구조를 만들어 문제를 해결 하였습니다. InsertNode함수는 현재 루트 노드로부터 해당 노드를 인서트 합니다.
재귀 함수를 사용하여 preOrder 함수는 전위순회로 출력하고 postOrder 함수는 후위순회로 출력합니다.
import sys
sys.setrecursionlimit(10**6)
class Node(object):
def __init__(self,data=None):
self.data = data
self.leftnode = None
self.rightnode = None
def insertNode(self, value):
currentNode = self
while True:
if currentNode.data > value:
if not currentNode.leftnode:
currentNode.leftnode = Node(value)
break
else:
currentNode = currentNode.leftnode
else:
if not currentNode.rightnode:
currentNode.rightnode = Node(value)
break
else:
currentNode = currentNode.rightnode
currentNode = Node(int(input()))
while True:
try:
currentNode.insertNode(int(input()))
except:
break
def postOrder(node):
if node is None:
return
postOrder(node.leftnode)
postOrder(node.rightnode)
print(node.data)
def preOrder(node):
if node is None:
return
print(node.data)
preOrder(node.leftnode)
preOrder(node.rightnode)
postOrder(currentNode)
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2805번 : 나무자르기 (0) | 2023.07.17 |
---|---|
[백준] 2110번 : 공유기 설치 (0) | 2023.07.17 |
[백준] 5052번 : 전화번호 목록 (0) | 2023.07.17 |
[백준] 5582번 : 공통 부분 문자열 (1) | 2023.07.16 |
[백준] 9935번 : 문자열 폭발 (0) | 2023.07.16 |