這裏先複習一遍二叉樹的最大深度。
class Solution:
def DEEPEST(self,root):
if not root:return 0
return max(self.DEEPEST(root.left),self.DEEPEST(root.right))+1
題目描述
給定一個 N 叉樹,找到其最大深度。
最大深度是指從根節點到最遠葉子節點的最長路徑上的節點總數。
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
children是列表類型,元素是樹節點。
"""
算法
採用DFS:深度優先搜索。
第一版:粗糙
class Solution:
def maxDepth(self, root: 'Node') -> int:
def DFS(root):
ls=[]
if not root:return 0
if not root.children:return 1
for i in root.children:
print(i.val)
ls.append(DFS(i))
print(ls)
k=max(ls)+1
return k
k=DFS(root)
return k
IMPROVE
class Solution:
def maxDepth(self, root: 'Node') -> int:
if not root:return 0
if not root.children:return 1
return max([self.maxDepth(i)for i in root.children])+1
執行用時 :48 ms, 在所有 Python3 提交中擊敗了82.28%的用戶
內存消耗 :15.6 MB, 在所有 Python3 提交中擊敗了7.01%的用戶