解題思路
一次檢查一個 level,每次都先把最右邊的紀錄下來,其他的把左右子節點放進 queue。
程式碼
class Solution { public: vector<int> rightSideView(TreeNode* root) { vector<int> ans; if(!root) return ans; queue<TreeNode*> q; q.push(root); while(!q.empty()) { ans.push_back(q.back()->val); int size = q.size(); for(int i=0; i<size; i++) { if(q.front()->left) q.push(q.front()->left); if(q.front()->right) q.push(q.front()->right); q.pop(); } } return ans; } };
沒有留言:
張貼留言