【Leetcode】104. 二叉树的最大深度(Maximum Depth of Binary Tree)

No104. 二叉树的最大深度

题目

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

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

说明

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

示例

  • 输入:nums = [1,2,3]
  • 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

思路:

使用递归算法,若node为None,则返回0;否则返回左右子树深度+1的最大值

解题代码(Python3)

class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        def getDepth(node):
            if node == None:
                return 0
            return max(getDepth(node.left)+1,getDepth(node.right)+1)
        return getDepth(root)

刚好发现这道题2个月之前做过:

class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        def preorder(x,level):
            if x:
                return max(preorder(x.left,level+1),preorder(x.right,level+1))
            else:
                return level
        return preorder(root,0)

发现自己对递归算法的使用更加熟悉了。

复杂度分析:

  • 时间复杂度O(2^n)
  • 空间复杂度O(1)

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Xiao_Spring/article/details/113747985