Sad Puppy 3 트리 순회 코드 작성하기 :: 개발자 아지트

 


def preorder(nodes, idx, result):
    if len(nodes)>idx:
        result.append(nodes[idx])
        preorder(nodes, (idx * 2) + 1, result)
        preorder(nodes, (idx * 2) + 2, result)
    return result

def inorder(nodes, idx, result):
    if len(nodes)>idx:
        inorder(nodes, (idx * 2) + 1, result)
        result.append(nodes[idx])
        inorder(nodes, (idx * 2) + 2, result)
    return result

def postorder(nodes, idx, result):
    if len(nodes)>idx:
        postorder(nodes, (idx * 2) + 1, result)
        postorder(nodes, (idx * 2) + 2, result)
        result.append(nodes[idx])
    return result

def solution(nodes):
    # 전위, 중위, 후위 순회 결과 계산
    # 노드 리스트와 루트 노드의 인덱스를 매개변수로 각각 호출
    
    preorderNodes = []
    inorderNodes = []
    postorderNodes = []

    preorderNodes = preorder(nodes, 0, preorderNodes) # 전위
    inorderNodes = inorder(nodes, 0, inorderNodes)
    postorderNodes = postorder(nodes, 0, postorderNodes)

    preorderNodesresult = " ".join(map(str,preorderNodes))
    inorderNodesresult = " ".join(map(str,inorderNodes))
    postorderNodesresult = " ".join(map(str,postorderNodes))

    total = []
    total.append(preorderNodesresult)
    total.append(inorderNodesresult)
    total.append(postorderNodesresult)
    
    return total

+ Recent posts