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
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
迭代,层序遍历
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
参考资料: