【路飞】算法-二叉树的深度

73 阅读1分钟

题目链接 LeetCode: leetcode-cn.com/problems/er…

题目简介 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。

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

最大深度.png
返回它的最大深度 3 。

解题思路 由于是求二叉树的最大深度,所以最直接的方式应该是递归的方式。
记录一个高度值,没吃增加一层的遍历就+1。
最后返回这个高度值

代码实现

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */

var maxDepth = function(root) {
    if(!root) return 0;
    let height = 1; // 默认有一个根节点
    function dfs(root, level){
        // 如果传入的节点已经为null,则什么都不做,直接return
        if(!root) return;
        if(res < level) res = level;
        // 每递归一次,level+1,高度加1
        dfs(root.left, level + 1);
        dfs(root.right, level + 1);
    }
   dfs(root, res);
   return res;
}