题目:
解答:
利用广度优先搜索进行层次遍历,记录下每层的最后一个元素。
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 vector<int> rightSideView(TreeNode* root) 13 { 14 vector<int> ans; 15 if(NULL == root) 16 { 17 return ans; 18 } 19 20 // bfs 层序遍历 将每层最后一个加入结果数组 21 queue<TreeNode*> que; 22 que.push(root); 23 while(!que.empty()) 24 { 25 int counts=que.size(); 26 for(int i=0; i < counts; ++i) 27 { 28 auto node=que.front(); 29 que.pop(); 30 31 if(node->left) 32 { 33 que.push(node->left); 34 } 35 if(node->right) 36 { 37 que.push(node->right); 38 } 39 if(i==counts-1) 40 { 41 ans.push_back(node->val); 42 } 43 } 44 } 45 46 return ans; 47 } 48 };