【JS每日一算法】🟩98.二叉树的最大深度(深度优先)

533 阅读1分钟

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

提示:

  • 树中节点的数量在 [0, 104] 区间内。
  • -100 <= Node.val <= 100

示例 1:

tmp-tree.jpg

输入: root = [3,9,20,null,null,15,7]
输出: 3

示例 2:

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

题解:

更多JS版本题解点击链接关注该仓库👀个人博客

/**
 * @description: dfs  TC:O(n)  SC:O(1)
 * @author: JunLiangWang
 * @param {*} root  给定二叉树根节点
 * @return {*}
 */
function dfs(root){
    /**
     * 该方案使用深度优先的方式,在递归的参数中加入当前节点的层级
     * 每次递归则将层级+1,然后记录最大深度即可。
     */

    // 记录最大深度
    let maxDeep=0;

    /**
     * @description: 递归实现深度优先
     * @author: JunLiangWang
     * @param {*} root 当前节点
     * @param {*} deep 层级
     * @return {*}
     */    
    function recursion(root,deep){
        // 当前节点为空直接返回
        if(!root)return 
        // 记录最大深度
        if(deep>maxDeep)maxDeep=deep
        // 继续递归左子树,层级+1
        recursion(root.left,deep+1)
        // 继续递归右子树,层级+1
        recursion(root.right,deep+1)
    }
    // 执行递归
    recursion(root,1)
    // 返回结果
    return maxDeep
}

来源:LeetCode