넘치게 채우기

[LeetCode] 145. Binary Tree Postorder Traversal 본문

PS/LeetCode

[LeetCode] 145. Binary Tree Postorder Traversal

riveroverflow 2024. 8. 25. 10:21
728x90
반응형

https://leetcode.com/problems/binary-tree-postorder-traversal/?envType=daily-question&envId=2024-08-25

leetcode - Binary Tree Postorder Traversal

문제 유형 : 트리, dfs, 이진트리

문제 난이도 : Easy

 

문제

Given the root of a binary tree, return the postorder traversal of its nodes' values.

 

이진트리의 루트가 주어진다, 노드의 값을 후위순회로 한 값을 반환하시오.

 

풀이

후위순회의 순서는, 왼쪽 서브트리 -> 오른쪽 서브트리 -> 루트의 순서이다.

이 순서대로 재귀호출 및 로직 처리를 해주면 된다.

 

코드

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) {}
 * };
 */

#pragma GCC optimize("03", "unroll-loops");
static const int __ = [](){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    return 0;
}();

class Solution {
public:
    void traverse(TreeNode* root, vector<int> &ans) {
        if(!root) return;
        traverse(root -> left, ans);
        traverse(root -> right, ans);
        ans.push_back(root -> val);
    }

    vector<int> postorderTraversal(TreeNode* root) {
        vector<int> ans;
        traverse(root, ans);
        return ans;
    }
};
728x90
반응형