給定一棵二叉樹,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。示例:輸入: [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;}
}