美文网首页
LeetCode - 104.二叉树的最大深度

LeetCode - 104.二叉树的最大深度

作者: huxq_coder | 来源:发表于2020-09-18 09:56 被阅读0次

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

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

    说明: 叶子节点是指没有子节点的节点。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    算法

    swift
    • 递归
    /**
         层级高度 = max(left最大高度,right最大高度)
         left最大高度和right最大高度的计算同上
         时间复杂度为O(n)
         空间复杂度为O(height)
         */
        func maxDepth(_ root: TreeNode?) -> Int {
            if root == nil {
                return 0
            }
            let leftHeight = maxDepth(root?.left)
            let rightHeight = maxDepth(root?.right)
            return max(leftHeight, rightHeight) + 1
        }
    
     
    class Solution {
        // 层级临时变量
        var maxLevel = 0
    
        func maxDepth(_ root: TreeNode?) -> Int {
            if root == nil {
                return 0
            }
            helper(root, 0)
            return maxLevel
        }
        // 递归二叉树
        func helper(_ node: TreeNode?, _ level: Int) {
            if node == nil {
                // 记录最大层级
                maxLevel = max(maxLevel, level)
                return
            }
            // 向下一层级移动
            helper(node?.left, level + 1)
            helper(node?.right, level + 1)
        }
    }
    
    

    GitHub:https://github.com/huxq-coder/LeetCode
    欢迎star

    相关文章

      网友评论

          本文标题:LeetCode - 104.二叉树的最大深度

          本文链接:https://www.haomeiwen.com/subject/zqbdyktx.html