給定一個二叉樹的?根節點?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;}
};