Skip to content

199. Binary Tree Right Side View #281

Open
@namespace-io

Description

@namespace-io

bfs

/**
 * Definition for a binary tree node.
 * 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> v;
        
        
        queue<TreeNode*> q;
        
        if(root == nullptr) return  v;
        q.push(root);
        TreeNode* t; 
        while(!q.empty()){
            auto n = q.size();
            for(int i = 0; i < n; i++){
                t = q.front();
                if(t->left != nullptr){
                    q.push(t->left);
                }
                
                if(t->right != nullptr){
                    q.push(t->right);
                }                   
                q.pop();
            }  
            
            v.push_back(t->val);
           
        }
        return v;
    }
};

dfs

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    void dfs(TreeNode* root, int d, vector<int>& v){
        if(root != nullptr){
            if(v.size() == d) v.push_back(root->val);
            else v[d] = root->val;
            
            dfs(root->left, d + 1, v);
            dfs(root->right, d + 1, v);
        }
    }
    vector<int> rightSideView(TreeNode* root) {
        vector<int> v;
        
        dfs(root, 0, v);
        
        return v;
    }
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions