https://programmers.co.kr/learn/courses/30/lessons/42892
import sys
sys.setrecursionlimit(10000)
def solution(nodeinfo):
# 트리 생성
nodeinfo = sorted(enumerate(nodeinfo), key=lambda x: -x[1][1])
root = [nodeinfo[0], [], []]
for i in range(1, len(nodeinfo)):
insert(root, nodeinfo[i])
# 순회
answer = [[], []]
preorder(answer, root)
postorder(answer, root)
return answer
def insert(curr, node):
parent, left, right = curr
if parent[1][0] > node[1][0]:
if left:
insert(left, node)
else:
left += [node, [], []]
else:
if right:
insert(right, node)
else:
right += [node, [], []]
def preorder(answer, curr):
parent, left, right = curr
answer[0].append(parent[0] + 1)
if left:
preorder(answer, left)
if right:
preorder(answer, right)
def postorder(answer, curr):
parent, left, right = curr
if left:
postorder(answer, left)
if right:
postorder(answer, right)
answer[1].append(parent[0] + 1)