给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:1 <---/ \
2 3 <---\ \5 4 <---
解题思路
按照层序遍历的模板,将每层的最后一个元素加入结果
代码
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {ArrayList<Integer> res=new ArrayList<>();public List<Integer> rightSideView(TreeNode root) {if(root==null) return res;Queue<TreeNode> queue=new LinkedList<>();queue.add(root);while (!queue.isEmpty()){int size=queue.size();int last=0;for (int i=0;i<size;i++){TreeNode temp=queue.poll();last=temp.val;if(temp.left!=null) queue.offer(temp.left);if(temp.right!=null) queue.offer(temp.right);}res.add(last);}return res;}
}