[路飞]_力扣算法题_199.二叉树的右视图

119 阅读1分钟
难度 中等\color{#f55d41}{中等}

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

题解

采用广度优先算法遍历二叉树,把每一层的最右侧元素取出来,得到的队列就是右视图的结果。

    /**
     * @param {TreeNode} root
     * @return {number[]}
     */
    var rightSideView = function(root) {
        // 如果树为空直接返回空数组
        if(!root) return []
        // 初始化第一层
        const que = [root];
        // 初始化右视图结果队列
        const resArr = []
        while(que.length) {
            const len = que.length;
            // 当前是整一层的节点,队列的最后一个值就是最右侧节点
            resArr.push(que[que.length-1].val)
            for(let i=0;i<len;i++) {
                // 每次从最左侧取出一个值
                const node = que.shift();
                if(node.left) que.push(node.left)
                if(node.right) que.push(node.right)
            }
        }
        return resArr
    };