LeetCode199 二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:
1 <---
/ \
2 3 <---
\ \
5 4 <---
可以选择bfs或者dfs。这里用bfs,用queue实现
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 if(root==nullptr) 14 return {}; 15 vector<int> ret; 16 queue<TreeNode*> qTree; 17 int num=1; 18 qTree.push(root); 19 while(num){ 20 int last_layer=num; 21 num=0; 22 while(last_layer!=1){ 23 TreeNode* temp=qTree.front(); 24 qTree.pop(); 25 if(temp->left!=nullptr){ 26 qTree.push(temp->left); 27 ++num; 28 } 29 if(temp->right!=nullptr){ 30 qTree.push(temp->right); 31 ++num; 32 } 33 --last_layer; 34 } 35 TreeNode* temp=qTree.front(); 36 qTree.pop(); 37 ret.push_back(temp->val); 38 if(temp->left!=nullptr){ 39 qTree.push(temp->left); 40 ++num; 41 } 42 if(temp->right!=nullptr){ 43 qTree.push(temp->right); 44 ++num; 45 } 46 } 47 return ret; 48 } 49 };