二叉树的最大深度

题目

难度级别:简单

给定一个二叉树,找出其最大深度。

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

说明:

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

示例:

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

    3
   / \
  9  20
    /  \
   15   7
返回它的最大深度 3 。

解题思路

法一

还是使用递归,在root不为null时初始化节点深度num为1,然后调用search方法将left值与right值传入,第三个参数为当前层数。

var maxDepth = function(root) {
    if (root === null) return 0

    let num = 1

    const search = (p, q, n) => {
        if (num <= n) num = n
        
        if (p === null && q === null){
             return
        }
        else if (p === null) {
            search(q.left, q.right, n+1)
        }else if (q === null) {
            search(p.left, p.right, n+1)
        }else{
            search(p.left, p.right, n + 1)
            search(q.left, q.right, n + 1) 
        }
    }

    search(root.left,root.right, num)

    return num
};

法二

还是递归,分别求出左边与右边的深度,在选出其最大值,对当前深度+1。

var maxDepth = function(root) {
    if (root === null) return 0
    else{
        let left = maxDepth(root.left)
        let right = maxDepth(root.right)   
        return Math.max(left,right) + 1
    }
};

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree

你可能感兴趣的:(二叉树的最大深度)