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

参考资料:

posted @ 2022-05-26 11:06  YTT77  阅读(16)  评论(0编辑  收藏  举报