leetcode(20)N叉树系列题目
(1)589. N 叉树的前序遍历
class Solution:
def preorder(self, root: 'Node') -> List[int]:
res = []
def traversal(root):
if not root:
return
res.append(root.val)
for child in root.children: # 遍历孩子节点
traversal(child)
traversal(root)
return res
(2)590. N 叉树的后序遍历
class Solution:
def postorder(self, root: 'Node') -> List[int]:
res = []
def traversal(root):
if not root:
return
for child in root.children:
traversal(child)
res.append(root.val)
traversal(root)
return res
(3)559. N 叉树的最大深度
迭代,层序遍历
class Solution:
def maxDepth(self, root: 'Node') -> int:
if not root:
return 0
res = 0
from collections import deque
que = deque([root])
while que:
size = len(que)
for _ in range(size):
cur = que.popleft()
if cur.children:
for child in cur.children:
que.append(child)
res += 1
return res
递归
class Solution:
def maxDepth(self, root: 'Node') -> int:
if not root:
return 0
res = 0
for child in root.children:
res = max(res, self.maxDepth(child))
return res + 1
参考资料: