LeetCode: 104.二叉树的最大深度|刷题打卡

184 阅读1分钟

一、题目描述

给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

注: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3, 9, 20, null, null, 15, 7]

   3
  / \
 9  20
   /  \
  15   7

返回它的最大深度 3

二、思路分析

求最大深度,那么自然会优先考虑深度优先遍历去做这道题目。
然后再深度优先遍历的过程中,记录每个节点所在的层级,找出最大的层级即可。

解题步骤

创建一个变量用来记录最大深度。
深度优先遍历整棵树,并记录每个节点的层级,同时不断的刷新最大深度这个变量。
遍历结束后,返回最大深度这个变量即可。

三、AC 代码

var maxDepth = function(root) {
    let res = 0
    
    const dfs = (n, l) => {
        if(!n) return 

        res = Math.max(res, l)
        dfs(n.left, l + 1)
        dfs(n.right, l + 1)
    }

    dfs(root, 1)

    return res
}

四、总结

总的来说这道题考的就是树的深度遍历,然后用一个变量去记录深度即可。
当然树的广度优先遍历也不是不可以用就是。

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情