題目分析:
給定一個二叉樹,找出其最大深度。二叉樹的深度爲根節點到最遠葉子節點的最長路徑上的節點數。說明: 葉子節點是指沒有子節點的節點。
示例:給定二叉樹 [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