题目链接:199. 二叉树的右视图 - 力扣(LeetCode)
要找从右边看树能看到的节点,也就是每一层的节点都只能看到最右边的那个,可以从右子树开始深度遍历,先装进来,遍历完右子树的,开始遍历左子树的,看看深度是否和已经装进来的数目相同(因为根节点深度为0),如果相同说明这一层深度的节点还没有被看到,装进来
class Solution {
public:
vector<int> ans;
void dfs(TreeNode *root, int depth) {
if (root == nullptr)
return;
if (depth == ans.size())
ans.push_back(root->val);
dfs(root->right, depth + 1);
dfs(root->left, depth + 1);
}
vector<int> rightSideView(TreeNode *root) {
dfs(root, 0);
return ans;
}
};