思路
根据层序遍历的思路。将每一层的最右边元素加入返回序列即可
解题方法
注意:链表删除一个数据后会立即重排,所以删除同一层的节点时,每次都删除第一个节点。
Code
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> ans=new ArrayList<>();if(root==null) return ans;List<TreeNode> queue=new ArrayList<>();queue.add(root);while(queue.size()>0){int size=queue.size();ans.add(queue.get(size-1).val);for(int i=0;i<size;i++){if(queue.get(i).left!=null)queue.add(queue.get(i).left);if(queue.get(i).right!=null)queue.add(queue.get(i).right);}for(int i=0;i<size;i++){queue.remove(0);}}return ans;}
}