【力扣日記】559 N叉樹的最大深度 | DFS

這裏先複習一遍二叉樹的最大深度

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%的用戶

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章