1. 题目描述
2. 题目分析
- 在很多的面经中看到过这种题,今天有空做了做
- 让你求二叉树的左视图或者右视图,我们可以直接层次遍历,对于层次遍历,参考这道题–102. 二叉树的层次遍历, 我们只需要取出每次层次遍历的第一个数或者最后一个数,存进list中,最后输出
- 这个题目的关键思想是在:
int len = quene.size(); for(int i = 0; i < len; i++){}
3. 题目代码
class Solution {
public List<Integer> rightSideView(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<TreeNode>();
List<Integer> list = new ArrayList<Integer>();
if(root == null){
return list;
}
queue.add(root);
while(!queue.isEmpty()){
int size = queue.size();
for(int i = size; i > 0; i--){
TreeNode tree = queue.poll();
if(tree.left != null){
queue.add(tree.left);
}
if(tree.right != null){
queue.add(tree.right);
}
if(i == 1){
list.add(tree.val);
}
}
}
return list;
}
}