leetcode199-二叉树的右视图

leetcode 199
在这里插入图片描述

思路

二叉树的右视图也是基于二叉树的层序遍历来实现的,首先要知道二叉树的层序遍历怎么实现,参考:二叉树的层序遍历,然后右视图就是取层序遍历里面每一层最后的一个元素,可以想到,每次从右侧去看的二叉树的话,那么看到的元素一定是这一层最右侧的元素,所以我们每次循环当前层的时候判断如果是最后一个元素的时候就push到结果值中去

从下图可以看到,右视图的话会看到的结果是[5,6,2]
层序遍历的结果是[ [5] , [4,6] , [1,2] ],那么我们需要的就是层序遍历的每一层最后一个值
在这里插入图片描述

实现

var rightSideView = function(root) {
    if(!root) return [];
    let result = [], queue = [root]
    while(queue.length){
        let len = queue.length;
        while(len--){
            const node = queue.shift();
            node.left && queue.push(node.left)
            node.right && queue.push(node.right)
            if(!len){ // 当前层最后一个元素
                result.push(node.val)
            }
        }
    }
    return result;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值