白駿1991クリスマスツリー巡り

1536 ワード



白俊樹の問題です
このツリーに示すように、ノードの値は重複しません.左、右の値が同時に指定されている場合は、重複しません.
pythonでは辞書形式で開くのが便利です.
Aというキーワードの辞書を使って、値の0番を左に、1番を右に移動します.
n = int(input())
tree = dict()
for i in range(n):
    root, left, right = input().split()
    tree[root] = (left, right)
    
preOrderAnswer = [] 
inOrderAnswer = []
postOrderAnswer  = [] 

def preOrder(root):
    preOrderAnswer.append(root)
    if ( tree[root][0] != "."):
        preOrder(tree[root][0] )# left 
    if ( tree[root][1] != "."):
        preOrder(tree[root][1])# right
    return preOrderAnswer

def inOrder(root):    
    if ( tree[root][0] != "."):
        inOrder(tree[root][0] )# left 
    inOrderAnswer.append(root)
    if ( tree[root][1] != "."):
        inOrder(tree[root][1])# right
    
def postOrder(root):
    if ( tree[root][0] != "."):
        postOrder(tree[root][0] )# left 
    if ( tree[root][1] != "."):
        postOrder(tree[root][1])# right
    postOrderAnswer.append(root)
    
        
preOrder("A")
inOrder("A")
postOrder("A")

for i in preOrderAnswer:
    print(i , end ="")
print()
for i in inOrderAnswer:
    print(i , end ="")
print()
for i in postOrderAnswer:
    print(i , end ="")