반응형
https://leetcode.com/problems/binary-tree-postorder-traversal/description/
재귀를 활용한 node 순회 문제였습니다.
📕 풀이방법
📔 풀이과정
postorder는 왼쪽 자식 -> 오른쪽 자식 -> 자기 자신 순으로 이진 tree를 순회하는 방식입니다.
*재귀이므로 vector의 원소 삽입 순서가 반대로 되어야 합니다.
1. 기저 즉, root == NULL이라면 에서 빈 vector를 반환합니다.
2. 왼쪽 자식의 순회 결과를 vector a에, 오른쪽 자식의 순회 결과를 vector b에 저장해줍니다.
3. vector v를 선언해 b, a순으로 해당 원소들을 넣어줍니다.
4. v를 반환합니다.
📕 Code
📔 C++
/**
* 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) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
if(root == NULL) return vector<int>();
vector <int> v;
vector <int> a = postorderTraversal(root->left);
vector <int> b = postorderTraversal(root->right);
v.insert(v.begin(), b.begin(), b.end());
v.insert(v.begin(), a.begin(), a.end());
v.push_back(root->val);
return v;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > 자료구조' 카테고리의 다른 글
(C++) - LeetCode (easy) 169. Majority Element (0) | 2022.12.09 |
---|---|
(C++) - LeetCode (easy) 160. Intersection of Two Linked Lists (0) | 2022.12.07 |
(C++) - LeetCode (easy) 144. Binary Tree Preorder Traversal (0) | 2022.12.05 |
(C++) - LeetCode (easy) 141. Linked List Cycle (0) | 2022.12.02 |
(C++) - LeetCode (easy) 136. Single Number (0) | 2022.12.01 |