Bakejoon/Silver

[Python] 백준 1991번 : 트리 순회 <Silver 5>

chattymin 2022. 4. 10. 16:03
728x90

⚠️ 내맘대로 작성한 코드이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️

 

1991번: 트리 순회

첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파

www.acmicpc.net

Code


import sys
input = sys.stdin.readline

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

def preorder(node):
  print(node.item, end="")
  if node.left != '.':
    preorder(tree[node.left])
  if node.right != '.':
    preorder(tree[node.right])

def inorder(node):
  if node.left != '.':
    inorder(tree[node.left])
  print(node.item, end="")
  if node.right != '.':
    inorder(tree[node.right])

def postorder(node):
  if node.left != '.':
    postorder(tree[node.left])
  if node.right != '.':
    postorder(tree[node.right])
  print(node.item, end="")

num = int(input())
tree = {}

for _ in range(num):
  node, left, right = map(str, input().split())
  tree[node] = Node(item=node, left=left, right=right)

preorder(tree['A'])
print()
inorder(tree['A'])
print()
postorder(tree['A'])

Code 필수 요소

1. Class구현 방법

2. node를 활용해서 tree구조를 만드는 방법

 

이것만 생각해내면 절반은 끝났다.

 

//Class를 통한 Node생성

C언어에서 구조체를 만들어 값을 저장한 것 처럼 파이썬에선 Class를 만들어 값을 저장했다. 

 

//for문을 통한 값 입력

tree라는 배열에 Node의 값들을 입력해줬다. 음... 이게 전부다.

 

추가적인 설명들은 내가 C언어로 작성했던 똑같은 문제에 가서 보면 된다.

https://naemamdaelo.tistory.com/7?category=1005618 
 

[C언어] 백준 1991번 : 트리 순회

⚠️ 내맘대로 작성한 코드이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️ https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 2

naemamdaelo.tistory.com

 

얼마전에 C언어로 작성했던 코드를 파이썬으로 만들어봤다. 파이썬 공부를 시작한지 얼마 안돼서 코드가 매끄럽지도 않고, 내가 짠게 아닌 코드도 좀 있다. 히히 지송. 파이썬으로 트리 구조를 만들때 구조체를 써야하나 고민했었는데 유감이지만 파이썬에서 구조체 쓰는 방법을 모른다. 그래서 배열로 했다. 하하하. 파이썬은 쉬운거 같으면서 헷갈린단말야

 

instagram : @naemamdaelo_study_blog

https://www.instagram.com/naemamdaelo_study_blog/

 

-꿑-

 

728x90