给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 1:
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]
示例 2:输入: [1,null,3]
输出: [1,3]
示例 3:输入: []
输出: []提示:
二叉树的节点个数的范围是 [0,100]
-100 <= Node.val <= 100
碰到这个题目的时候想了有5分钟,没太大的思路
然后突然我脑海里想到了 层次遍历,
我就想:层次遍历我会呀,那不就是每次取层次遍历的最后一个值不就完了嘛,于是就一顿操作,做出来了呃
不过我实现的稍有点不同
就是我是从右往左找的,我是将队列里的第一个值放到集合中,其它的没变化
总结:
说实话这个题目的核心还是考察我们对于二叉树的层序遍历的考察~
/*** 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 rightSideView(TreeNode root) {List res=new ArrayList<>();if(root==null)return res;Queue queue=new LinkedList<>();queue.offer(root);while(!queue.isEmpty()){int size=queue.size();for(int i=0;iTreeNode tem=queue.poll();if(i==0){res.add(tem.val);}if(tem.right!=null){queue.offer(tem.right);}if(tem.left!=null){queue.offer(tem.left);}}}return res;}
}
199. 二叉树的右视图