剑指 Offer II 046. 二叉树的右侧视图
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]
BFS解题。
层序遍历,不过就是要在每层遍历完成之后判断最后一个元素,也就是在while循环的时候用len来判断是否是最后一个元素,每经过一次while,其实就是一个元素出队列,当len为0时,也就是最后一个元素出队列,此时就记录到ans中;这一点对于根节点也照样适用。
class Solution {
public List<Integer> rightSideView(TreeNode root) {
List<Integer> ans=new ArrayList<Integer>();
if(root==null){
return new ArrayList<Integer>();
}
Queue<TreeNode> queue = new ArrayDeque<TreeNode>();
queue.offer(root);
TreeNode t = root;
while(!queue.isEmpty()){
int len=queue.size();
while(len-->0){
TreeNode node = queue.poll();
if(len==0){
ans.add(node.val);
}
if(node.left!=null){
queue.offer(node.left);
}
if(node.right!=null){
queue.offer(node.right);
}
}
}
return ans;
}
}