ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

1991๋ฒˆ: ํŠธ๋ฆฌ ์ˆœํšŒ

์ฒซ์งธ ์ค„์—๋Š” ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ N(1≤N≤26)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๊ฐ ๋…ธ๋“œ์™€ ๊ทธ์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋…ธ๋“œ์˜ ์ด๋ฆ„์€ A๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์˜๋ฌธ์ž

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๊ฒƒ์€ ๊นŠ์ด ์šฐ์„ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์–ธ์ œ ํ• ์ง€ ๊ตฌํ˜„ํ•˜๋ฉด ์ „์œ„, ์ค‘์œ„, ํ›„์œ„ ์ˆœํšŒ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์žฌ๊ท€ ํ˜ธ์ถœ์„ ํ•  ๋•Œ ๋ถ€๋ชจ๋ฅผ ์–ธ์ œ ์ถœ๋ ฅํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์ˆœํšŒ ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ์ง„๋‹ค. ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

  • ์ „์œ„ ์ˆœํšŒ : ๋ถ€๋ชจ → ์™ผ์ชฝ ์ž์‹ → ์˜ค๋ฅธ์ชฝ ์ž์‹
  • ์ค‘์œ„ ์ˆœํšŒ : ์™ผ์ชฝ ์ž์‹ → ๋ถ€๋ชจ → ์˜ค๋ฅธ์ชฝ ์ž์‹
  • ํ›„์œ„ ์ˆœํšŒ : ์™ผ์ชฝ ์ž์‹ → ์˜ค๋ฅธ์ชฝ ์ž์‹ → ๋ถ€๋ชจ

 

์ฝ”๋“œ

from sys import stdin


def traversal(cur_node, order):
    left, right = graph[cur_node].values()

    if order == 'pre':
        print(cur_node, end='')
    if left != '.':
        traversal(left, order)
    if order == 'in':
        print(cur_node, end='')
    if right != '.':
        traversal(right, order)
    if order == 'post':
        print(cur_node, end='')


if __name__ == '__main__':
    n = int(stdin.readline())
    graph = dict()
    for _ in range(n):
        node, left, right = stdin.readline().split()
        graph[node] = {'l': left, 'r': right}

    for order in ('pre', 'in', 'post'):
        traversal('A', order)
        print()
728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€