uacs2024

导航

leetcode199-二叉树的右视图

199. 二叉树的右视图

这道题BFS很容易想到。但DFS没想出来。

这是BFS

vector<int> rightSideView(TreeNode* root) {
        if(root==nullptr) return {};
        queue<TreeNode*> qqq;
        vector<int> res;
        qqq.push(root);
        while(!qqq.empty())
        {
            int size=qqq.size();
            for(int i=0;i<size;i++)
            {
                TreeNode *t=qqq.front();
                qqq.pop();
                if(i==size-1) res.push_back(t->val);
                if(t->left) qqq.push(t->left);
                if(t->right) qqq.push(t->right);
            }
        }
        return res;
    }

这是DFS,主要DFS太妙了,真的没想到

class Solution {
public:
    vector<int> res;
    void dfs(TreeNode* root,int index)
    {
        if(root==nullptr) return;
        if(index==res.size())
        {
            res.push_back(root->val);
        }
        dfs(root->right,index+1);
        dfs(root->left,index+1);
    }
    vector<int> rightSideView(TreeNode* root)
    {
        dfs(root,0);
        return res;
    }
};

 

posted on 2022-10-31 15:38  ᶜʸᵃⁿ  阅读(9)  评论(0编辑  收藏  举报