给定一个二叉树的 根节点 root
,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 1:
输入:root = [1,2,3,null,5,null,4]
输出:[1,3,4]
解题思路:我们可以想到这题实际上就是去寻找每一个新的深度出现的值将其插入vector中。如果遍历到一个新的深度时,优先将右节点的值插入vector中,没有右节点则插入左节点,所以要先对右子树进行递归,当然递归的边界条件是当前节点不为空。
class Solution {
public:
vector<int> ans;
void dfs(TreeNode *root,int len)
{if(!root){return ;}if(len==ans.size()){ans.push_back(root->val);}dfs(root->right,len+1);dfs(root->left,len+1);
}vector<int> rightSideView(TreeNode* root) {dfs(root,0);return ans;}
};