找树左下角的值

简介: 🎈每天进行一道算法题目练习,今天的题目是“找树左下角的值”,给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值,一起来复习一下树的遍历吧。

说在前面

🎈每天进行一道算法题目练习,今天的题目是“找树左下角的值”,一起来复习一下树的遍历吧。

问题描述

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。
示例 1:

输入: root = [2,1,3]
输出: 1

示例 2:

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7

提示:

二叉树的节点个数的范围是 [1,10^4]
-2^31 <= Node.val <= 2^31 - 1 

思路分析

首先让我们一起来了解一下题意,题目说的是要我们找出二叉树的最底层最左边节点的值,注意这里的描述,我们需要找的是最底层最左边,最左边的前提条件的做底层,所以首先我们应该要先找到最底层,再找到这一层的最左边。\
理解了题目之后是不是觉得好像没有很难?我们可以使用前序遍历来进行解题,记录每次遍历的层级数,层级数增大时则更新结果值,应为是前序遍历,每一层都是先访问到最左边的节点,所以这样得到的结果就是最底层最左边的节点的值,具体步骤如下:

  • 1、初始化结果和层级

将结果变量res初始化为'',当前最大层级floor初始化为-1,每次遍历更新最大层级和结果。

let floor = -1;
let res = '';
  • 2、前序遍历求结果值

当前层级大于最大层级时,更新最大层级数和结果值。

const dfs = function(f,r){
    if(!r) return;
    if(f > floor){
        floor = f;
        res = r.val
    }
    dfs(f+1,r.left);
    dfs(f+1,r.right);
};

AC代码

/**
 * 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 findBottomLeftValue = function(root) {
    let floor = -1;
    let res = '';
    const dfs = function(f,r){
        if(!r) return;
        if(f > floor){
            floor = f;
            res = r.val
        }
        dfs(f+1,r.left);
        dfs(f+1,r.right);
    };
    dfs(0,root);
    return res;
};

说在后面

🎉这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打打羽毛球🏸 ,平时也喜欢写些东西,既为自己记录📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解🙇,写错的地方望指出,定会认真改进😊,在此谢谢大家的支持,我们下文再见🙌。
目录
相关文章
|
7月前
|
C++ Python
leetcode-513:找树左下角的值
leetcode-513:找树左下角的值
43 0
19_找树左下角的值
19_找树左下角的值
|
7月前
|
存储 算法 Java
给定一组棋子的坐标,判断是否可以互相攻击。如果两个棋子的横纵坐标任意一个相同,则认为它们可以互相攻击。(提示:使用哈希表)
给定一组棋子的坐标,判断是否可以互相攻击。如果两个棋子的横纵坐标任意一个相同,则认为它们可以互相攻击。(提示:使用哈希表)
50 0
|
7月前
leetcode-1725:可以形成最大正方形的矩形数目
leetcode-1725:可以形成最大正方形的矩形数目
40 0
判断点是否在线段上
判断点是否在线段上
157 0
|
Python
山峰数组的顶部
山峰数组的顶部
68 0
leetcode 513 找左下角的值
leetcode 513 找左下角的值
59 0
leetcode 513 找左下角的值
|
存储 Python
LeetCode 513. 找树左下角的值
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
51 0
LeetCode 1828. 统计一个圆中点的数目
给你一个数组 points ,其中 points[i] = [xi, yi] ,表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。
111 0
LeetCode每日一题——513. 找树左下角的值
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
74 0
LeetCode每日一题——513. 找树左下角的值