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)