[leetcode]Binary Tree Right Side View

1260 단어 LeetCode
오랫동안 쓰지 않아서 요즘 졸업 논문을 쓰느라 바쁘다.
이 문제는 바로 두 갈래 나무라는 것이다. 네가 오른쪽에서 볼 수 있는 수는 어떤 것들이 있는지 (가려질 것이다)
사실 추상적으로 보면...두 갈래 나무의 층마다 가장 오른쪽의 수는 어떤 것들이 있습니까?
그럼 우리 층층이 한 번씩 훑어보면 돼.
 
/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<int> rightSideView(TreeNode *root) {
        vector<int> ans;
        if (root == nullptr) return ans;
        queue<TreeNode*> que;
        que.push(root);
        TreeNode* curr;
        while(!que.empty()) {
            int cnt = que.size();
            for (int i = 0; i < cnt; i++) {
                curr = que.front(); que.pop();
                if (curr->left) {
                    que.push(curr->left);
                }
                if (curr->right) {
                    que.push(curr->right);
                }
            }
            ans.push_back(curr->val);
        }
        return ans;
    }
};

좋은 웹페이지 즐겨찾기