​原题链接​

不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油o~

199.二叉树的右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例:

LeetCode:199.二叉树的右视图(Java语言)_算法


解题思路:

利用广度优先遍历将遍历的节点存入队列中
但是和层序不同,本题优先将右节点入队,从右向左看,如果根节点存在右孩子,则左孩子看不见,如果没有,则输出左孩子,所以优先将右孩子入队
进行一个循环,处理每层的节点,将每层第一个入队的节点输出

代码:

/**
*作者:魏宝航
*2020年11月26日,下午16:14
*/
class Solution {
public List<Integer> rightSideView(TreeNode root) {
if(root==null){
return new ArrayList<Integer>();
}
List<Integer> arr=new ArrayList<Integer>();
Queue<TreeNode> list=new LinkedList<>();
list.add(root);
while(!list.isEmpty()){
int size=list.size();
boolean flag=true;
for(int i=0;i<size;i++){
TreeNode temp=list.poll();
if(flag){
arr.add(temp.val);
flag=false;
}
if(temp.right!=null){
list.add(temp.right);
}
if(temp.left!=null){
list.add(temp.left);
}
}
flag=true;
}
return arr;
}
}

执行结果:

LeetCode:199.二叉树的右视图(Java语言)_队列_02