给定一个二叉树的 根节点
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
迭代+队列
这题需要注意一下 一层只有一个节点的话那么默认为右视图,看下面的图片。
public List<Integer> rightSideView(TreeNode root) {
List<Integer> resultList = new ArrayList<>();
if(root == null) return resultList;
Queue<TreeNode> que = new LinkedList<>();
//把头节点方进队列
que.add(root);
while(!que.isEmpty()){
int len = que.size();
while(len > 0){
TreeNode tmpNode = que.poll();
if(len-1 == 0){
resultList.add(tmpNode.val);
}
if(tmpNode.left != null) que.add(tmpNode.left);
if(tmpNode.right != null) que.add(tmpNode.right);
len--;
}
}
return resultList;
}