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 @   YTT77  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示