12.25-----递归

N 叉树的后序遍历

python 复制代码
"""
# Definition for a Node.
class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""

class Solution:
    def postorder(self, root: 'Node') -> List[int]:

        ans=[]
        def dfs_find (root):
            # 终止条件
            if root==None:
                return
            # 保存前序
            
            # 遍历子节点
            for child in root.children:
                # 进入下一层
                dfs_find(child)
            ans.append(root.val)

        dfs_find(root)
        return ans

N 叉树的前序遍历

python 复制代码
"""
# Definition for a Node.
class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""

class Solution:
    def preorder(self, root: 'Node') -> List[int]:
        # 保存结果数组
        ans=[]
        def dfs_find (root):
            # 终止条件
            if root==None:
                return
            # 保存前序
            ans.append(root.val)
            # 遍历子节点
            for child in root.children:
                # 进入下一层
                dfs_find(child)

        dfs_find(root)
        return ans

N 叉树的层序遍历

python 复制代码
"""
# Definition for a Node.
class Node(object):
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""
    # 广度优先搜索

class Solution(object):
    def levelOrder(self, root):
        """
        :type root: Node
        :rtype: List[List[int]]
        """
        # root 为空返回
        if not root:
            return[]
        ans=list()
        # 队列---root
        q=deque([root])

        # 广度搜索
        while q:
            cnt = len (q)
            # 深度
            level= list()
            for _ in range (cnt):
                cur=q.popleft()
                level.append(cur.val)
                for child in cur.children:
                    q.append(child)
            ans.append(level)
        return ans
相关推荐
DFT计算杂谈几秒前
免注册下载各个版本Anaconda3/Miniconda3
python
csbysj20205 分钟前
SVN 标签
开发语言
2501_930707788 分钟前
如何在 C# 中分离饼图的某个区域
开发语言·c#
缺点内向12 分钟前
如何在C#中添加Excel文档属性?
开发语言·数据库·c#·.net·excel
Howie Zphile21 分钟前
做移动端的 Next.js 项目,可以选哪些 UI?
开发语言·javascript·ui
虹科网络安全21 分钟前
艾体宝干货 | Redis Python 开发系列#6 缓存、分布式锁与队列架构
redis·python·缓存
猎人everest21 分钟前
Django Rest Framework (DRF) 核心知识体系梳理与深度讲解
后端·python·django
卿雪22 分钟前
缓存异常:缓存击穿、缓存穿透、缓存雪崩 及其解决方案
java·数据库·redis·python·mysql·缓存·golang
无限进步_24 分钟前
C语言文件操作函数解析
c语言·开发语言·数据库·c++·后端·visual studio
背心2块钱包邮28 分钟前
第3节——differentiation rules(求导法则)
人工智能·python·matplotlib·scipy