题目分析:
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。
示例:给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
解题思路:
- 这一题可以用深度遍历和广度遍历解决,深度遍历采用递归,广度遍历使用队列的思想。
- 这一题可以说是一个非常经典的递归题目。
提交代码1:(深度遍历,递归,Runtime: 44 ms, faster than 98.10% )
class Solution:
def maxDepth(self, root):
if not root: return 0
return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))
提交代码2:(广度遍历,队列,Runtime: 44 ms, faster than 98.10% )
class Solution(object):
def maxDepth(self, root):
if root == None:
return 0
depth = 0
q = [root]
while len(q) != 0:
depth += 1
for i in range(0, len(q)):
if q[0].left:
q.append(q[0].left)
if q[0].right:
q.append(q[0].right)
del q[0]
return depth