본문 바로가기

트리순회11

[백준 5639] 이진검색트리 www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 어렵당...재귀를 사용하는 문제인거까진 알겠는데 접근이 어려웠다. 문제에서 요구하는 것은 전위순회를 후위순회로 바꾸는 것이다. bst이므로 중복된 숫자는 존재하지 않고 왼쪽 서브트리 왼쪽 서브트리 -> 오른쪽 서브트리 순이므로 배열의 0번째 인덱스가 무조건 루트임을 확인할 수 있다. 왼쪽 서브트리에 있는 노드들은 전부 .. 2020. 11. 24.
[leetcode 107] Binary Tree Level Order Traversal II Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root). For example: Given binary tree [3,9,20,null,null,15,7], return its bottom-up level order traversal as: [ [15,7], [9,20], [3] ] 문제 풀이: 레벨 기준 트리 순회 bfs로 순회하되 레벨을 기준으로 노드를 체크한다. 1. 맨 처음엔 루트 노드를 큐에 푸쉬 2. 큐의 사이즈를 체크 -> 같은 레벨에 있는 노드 수이다. 3. 벡터 생성 4. 큐의 사이즈 만.. 2020. 11. 21.
[leetcode 105] Construct Binary Tree from Preorder and Inorder Traversal Given preorder and inorder traversal of a tree, construct the binary tree. preorder와 inorder 배열보고 본래 이진 트리 구현하기 Note: You may assume that duplicates do not exist in the tree. For example, given preorder = [3,9,20,15,7] inorder = [9,3,15,20,7] Return the following binary tree: 풀이: - 난이도는 medium이었지만 몹시 어려웠다. - dfs와 inorder preorder의 개념이 혼합된 문제 - 핵심 개념: inorder는 왼쪽 서브트리 -> 루트 -> 오른쪽 서브 트리 preorder는.. 2020. 10. 24.
[leetcode 114] Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-place. For example, given the following tree: 문제 풀이: - 순서가 root->left->right 순서: preorder임 - 스택을 사용해서 preorder 순회하기 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * Tr.. 2020. 10. 21.