【树】199. 二叉树的右视图

题目:

解答:

利用广度优先搜索进行层次遍历,记录下每层的最后一个元素。

 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 };

猜你喜欢

转载自www.cnblogs.com/ocpc/p/12818207.html