zoukankan      html  css  js  c++  java
  • [LeetCode] 104. Maximum Depth of Binary Tree(二叉树的最大深度)

    Description

    Given a binary tree, find its maximum depth.

    给定一棵二叉树,求其最大深度。

    The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

    最大深度指从根节点到最远叶子节点的最长路径,所经过的节点的数量。

    Note

    A leaf is a node with no children.

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

    Examples

    Example 1

    Given binary tree [3, 9, 20, null, null, 15, 7]

        3
       / 
      9  20
        /  
       15   7
    

    return its depth = 3.

    Solution

    解答此题,首先要确定以下几种状况

    • 树本身不存在时(null),其深度为 0

    • 树只存在一个根节点时,其深度为 1

    • 对于二叉树来说,其深度为 ( ext{max}{左子树的深度, 右子树的深度})

    然后就可以写出相应的代码了(经压缩可以写成单行 return)

    /**
     * Example:
     * var ti = TreeNode(5)
     * var v = ti.`val`
     * Definition for a binary tree node.
     * class TreeNode(var `val`: Int) {
     *     var left: TreeNode? = null
     *     var right: TreeNode? = null
     * }
     */
    import kotlin.math.max
    
    class Solution {
        fun maxDepth(root: TreeNode?): Int {
            return if (root == null) {
                0
            } else {
                max(maxDepth(root.left), maxDepth(root.right)) + 1
            }
        }
    }
    

    对于不是二叉树的情况,解法类似。例如,如果存在以下树结构

    data class TreeNode(`val`: Int) {
        val children: MutableList<TreeNode>
    }
    

    那么也只是由“遍历左右子树”变为“遍历所有的子树,找其深度的最大值”,其余不变。

  • 相关阅读:
    skywalking物理拓扑图
    检测HTTPS证书到期时间
    docker zipkin 链路监控
    定时任务和任务-示例
    小程序列表循环出来的list是不同接口赋的值
    小程序编辑器报-50003错误肿么办?
    uni-app小程序组建
    2019
    春日
    Mac安装软件提示破损
  • 原文地址:https://www.cnblogs.com/zhongju/p/13772667.html
Copyright © 2011-2022 走看看