给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
方法一:简单的,就是自身递归,前提要明白children是子树节点的集合,应该遍历输出计算
"""
# Definition for a Node.
class Node(object):
def __init__(self, val, children):
self.val = val
self.children = children
"""
class Solution(object):
def maxDepth(self, root):
"""
:type root: Node
:rtype: int
"""
if not root:
return 0
if not root.children:
return 1
deep = 1 + max(self.maxDepth(child) for child in root.children)
return deep
执行用时: 132 ms, 在Maximum Depth of N-ary Tree的Python提交中击败了61.93% 的用户
方法二:稍微麻烦一点的,但是可以学习新的东西,就是N叉树的层次遍历。这里层次遍历树,每一层加一个一就可以了
"""
# Definition for a Node.
class Node(object):
def __init__(self, val, children):
self.val = val
self.children = children
"""
class Solution(object):
def maxDepth(self, root):
"""
:type root: Node
:rtype: int
"""
if not root:
return 0
que=collections.deque()
deep=0
que.append(root)
while que:
size=len(que)
for i in range(size):
node=que.popleft()
for j in node.children:
que.append(j)
deep+=1
return deep
执行用时: 128 ms, 在Maximum Depth of N-ary Tree的Python提交中击败了96.49% 的用户