#86. [백준_C언어] 1991 : 트리 순회 \ 트리

 

입력 코드

#include <stdio.h>

struct Tree{
	int left,right;
}t[26];

void pre(int v){
	if (v>=0){
		printf("%c",v+65);
		pre(t[v].left);
		pre(t[v].right);
	}
}

void in(int v){
	if (v>=0){
		in(t[v].left);
		printf("%c",v+65);
		in(t[v].right);
	}
}

void post(int v){
	if (v>=0){
		post(t[v].left);
		post(t[v].right);
		printf("%c",v+65);
	}
}
    
int main(){
	int n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++){
		char root,left,right;
		scanf(" %c %c %c",&root,&left,&right);
		t[root-65].left = left-65;
		t[root-65].right = right-65;
	}
	pre(0);
	printf("\n");
	in(0);
	printf("\n");
	post(0);
	printf("\n");
	return 0;
}

출처 www.acmicpc.net/source/3219803

 

 

코드 설명

#트리 #재귀

 

 

 

문제 출처

www.acmicpc.net/problem/1991

 

1991번: 트리 순회

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

www.acmicpc.net