8월 24일(목) - 트리 (5639번)
5639번: 이진 검색 트리
트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다
www.acmicpc.net
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
최초 생각 정리
- 이진 탐색 트리와 관련해서는 insert_node 함수와 new_node 함수는 교재의 풀이를 참고
- 입력의 수에 대한 제한이 없으므로, EOF이기 전까지는 계속 입력으로 &data를 받는다
- insert_node와 new_node의 내용은 교재 활용
- 출력은 postorder함수에서 후위순회한 결과를 출력한다
12월 30일(금) - 트리 정리
1.이진 트리 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 2. 이진 트리의 순회 2-1) 전위순회 2-2) 중위순회 2-3) 후위순회 2-4) 레
jh4995.tistory.com
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
문제점
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이 - 1
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
#include <stdlib.h>
typedef struct Treenode {
int key;
struct Treenode* left;
struct Treenode* right;
}Treenode;
Treenode* new_node(int item)
{
Treenode* tmp = (Treenode*)malloc(sizeof(Treenode));
tmp->key = item;
tmp->left = NULL;
tmp->right = NULL;
return tmp;
}
Treenode* insert_node(Treenode* node, int key)
{
if (node == NULL)
{
return new_node(key);
}
else if (key < node->key)
{
node->left = insert_node(node->left, key);
}
else if (key > node->key)
{
node->right = insert_node(node->right, key);
}
return node;
}
void postorder(Treenode* root)
{
if (root != NULL)
{
postorder(root->left);
postorder(root->right);
printf("%d\n", root->key);
}
}
int main(void)
{
int data;
Treenode* tree = NULL;
while (scanf("%d", &data) != EOF)
{
tree = insert_node(tree, data);
}
postorder(tree);
return 0;
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이 - 2
(풀이출처 -> https://www.acmicpc.net/source/62861407)
#include <stdio.h>
int li[10001];
void post(int l, int r) {
if (l > r) return;
int m = r + 1;
for (int i = l + 1; i <= r; i++)
if (li[l] < li[i]) {
m = i; break;
}
post(l + 1, m - 1);
post(m, r);
printf("%d\n", li[l]);
}
int main(void) {
int x, cnt = 0;
while (scanf("%d", &x) != EOF) li[cnt++] = x;
post(0, cnt-1);
return 0;
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
'백준(C언어) > 23년 8월' 카테고리의 다른 글
[C] 백준 - 2565번: 전깃줄 (0) | 2023.08.28 |
---|---|
[C] 백준 - 2583번: 영역 구하기 (0) | 2023.08.25 |
[C] 백준 - 1049번: 기타줄 (1) | 2023.08.23 |
[C] 백준 - 11054번: 가장 긴 바이토닉 부분 수열 (0) | 2023.08.21 |
[C] 백준 - 11403번: 경로 찾기 (0) | 2023.08.18 |
댓글