[路飞]_199. 二叉树的右视图

125 阅读1分钟

题目介绍

给定一个二叉树的 根节点 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 

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/bi… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

本题的意思就是,找到二叉树的每层最右边的节点,所以递归遍历,把每层的节点用一个数组存起来,然后找到每层的最后一个节点

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var rightSideView = function(root) {
    let arr = []
    function rightSideViewFn(root, i = 0) {
        if (!root) return
        !arr[i] && (arr[i] = [])
        arr[i].push(root.val)
        rightSideViewFn(root.left, i + 1)
        rightSideViewFn(root.right, i + 1)
    }
    rightSideViewFn(root)
    let arr2 = []
    for (let val of arr) {
        arr2.push(val[val.length - 1])
    }
    return arr2 
};