题目描述:
解题过程:
官方答案有两个,首先是深度优先搜索,使用递归的方法:
# 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 not root:
return 0
else:
left_height=self.maxDepth(root.left)
right_height=self.maxDepth(root.right)
return max(left_height,right_height)+1
递归时的发现,递归时要有if判断递归条件,以判断何时递归结束;递归本身语句意义不大可以忽略;重要的是递归后面的语句,这是每次递归都会改变的变量。
第二个答案使用的是迭代的方法:
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
我们从包含根节点且深度为1的栈开始,然后继续迭代,将当前节点弹出栈并推入子节点,且每一步都会更新深度。
总结:
None