思路
二叉树的右视图,相当于对二叉树进行层序遍历,将每一层的最后一个节点存入最终的结果即可。
代码
public List<Integer> rightSideView(TreeNode root) {List<Integer> res = new ArrayList<>();if(root==null) return res;//保存节点的队列Queue<TreeNode> queue = new LinkedList<>();//根节点先入队queue.offer(root);//如果队列中还有元素while(!queue.isEmpty()){int count = queue.size(); //记录此时队列中的元素个数while(count-->0){ //将此时队列中的元素的左右孩子加入队列TreeNode node = queue.poll();if(node.left!=null) queue.offer(node.left);if(node.right!=null) queue.offer(node.right);if(count==0) res.add(node.val); //如果此时是队列中的最后一个元素则加入到res中}}return res;}
