[PY] 시작부터 막힌 그래프 [1991 : 트리 순회]

https://www.acmicpc.net/problem/1991

첫 번째로 풀어봐야 할 문제부터 막혔다.
추상적인 그래프 그림을 상상 하는거야 어렵지 않지만 문제는 코드에다 이걸 반영 할 방법을 몰랐다.
깊은 생각을 해봐도 감이 안오는게 벌써 치매가 왔나 싶을정도.

전위 순회, 중위 순회, 후위 순회는 무슨 말을 하고 싶은건지 알지만 막상 그래프를 입력받은대로 만드려니 뭘 해야할지 아예 모르겠다.
그래서 그냥 시작부터 파일럿 코한테 물어보니 답을 얻었다.

참고 할만한게 알파벳 밖에 없다면 알파벳을 인덱스로 쓰는 자료구조를 쓰라고했다. DICTIONARY GOOD~

import sys

nodeCnt = int(sys.stdin.readline())
nodes = []
for i in range(nodeCnt):
    command = sys.stdin.readline().strip()
    parts = command.split(" ")

    nodes.append([parts[0], parts[1], parts[2]])


def preorder(node):
    print(node.data, end="")

    if(node.left != None):
        preorder(node.left)

    if(node.right != None):
        preorder(node.right)

def inorder(node):
    if(node.left != None):
        inorder(node.left)

    print(node.data, end="")


    if(node.right != None):
        inorder(node.right)

def postorder(node):
    if(node.left != None):
        postorder(node.left)
    if(node.right != None):
        postorder(node.right)

    print(node.data, end="")



class Node:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

# 트리 생성 함수
def create_tree(nodes):
    node_map = {}  # 노드 참조를 저장할 맵
    for curNode, leftNode, rightNode in nodes:
        if curNode not in node_map:
            node_map[curNode] = Node(curNode)  # 현재 노드 생성
        if leftNode != ".":  
            if leftNode not in node_map:
                node_map[leftNode] = Node(leftNode)  # 좌측 자식 노드 생성
            node_map[curNode].left = node_map[leftNode]  # 연결 설정
        if rightNode != ".":  # 우측 자식이 있는 경우
            if rightNode not in node_map:
                node_map[rightNode] = Node(rightNode)  # 우측 자식 노드 생성
            node_map[curNode].right = node_map[rightNode]  # 연결 설정
    return node_map[nodes[0][0]]  # 루트 노드 반환

# 트리 생성
root = create_tree(nodes)

preorder(root)
print("")
inorder(root)
print("")
postorder(root)

preorder를 복붙해서 만들면서 inorder, postorder도 같이 만들었는데,
안에 있는 preorder를 바꿔주지 않아놓고 왜 안되지 하는 참사가 있었다.

컨디션이 안좋은가.. 시야가 왜이리 좁아졌는지 모르겠다.

'문제풀이' 카테고리의 다른 글

[PY] 11724 : 연결 요소의 갯수 (Union-Find)  (0) 2025.03.29
[PY] 1260 : DFS와 BFS  (0) 2025.03.28
[PY] <!> 하자있는 채로 풀었던 내용들  (0) 2025.03.28
[PY]<!> 9935 : 문자열 폭발  (0) 2025.03.27
[PY] 10815 : 숫자카드  (0) 2025.03.27