第一想法是递归,因为他们能分成相同的二叉结构
先给出n = 0的情况
if root == None:
return 0
其实我这里还多写了n = 1的情况,其实可以不写,只是当时没想到不写其实也行
elif root.left == None and root.right == None:
return 1
然后写如何从n = k推到 n = k+1
else:
return 1 + max(self.maxDepth(root.left),self.maxDepth(root.right))
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if root == None:
return 0
elif root.left == None and root.right == None:
return 1
else:
return 1 + max(self.maxDepth(root.left),self.maxDepth(root.right))
官方解答还给出一种迭代的方法,其实就是不断左右往下记录当前深度和分裂小树,然后直到所有的小树都是None,然后里面有一句在比较所有的当前深度,最后再return出来
class Solution:
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
stack = []
if root is not None:
stack.append((1, root))
depth = 0
while stack != []:
current_depth, root = stack.pop()
if root is not None:
depth = max(depth, current_depth)
stack.append((current_depth + 1, root.left))
stack.append((current_depth + 1, root.right))
return depth
'''
作者:LeetCode
链接:https://leetcode-cn.com/problems/two-sum/solution/er-cha-shu-de-zui-da-shen-du-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
'''