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
相关推荐
新之助小锅31 分钟前
java版连接汇川PLC,发送数据,读取数据,保持重新链接,适用安卓
android·java·python
海琴烟Sunshine33 分钟前
leetcode 383. 赎金信 python
python·算法·leetcode
VBA63371 小时前
VBA即用型代码手册:利用函数保存为PDF文件UseFunctionSaveAsPDF
开发语言
say_fall2 小时前
C语言编程实战:每日刷题 - day2
c语言·开发语言·学习
上去我就QWER3 小时前
Qt快捷键“魔法师”:QKeySequence
开发语言·c++·qt
Pluto_CSND5 小时前
Java中的静态代理与动态代理(Proxy.newProxyInstance)
java·开发语言
惊讶的猫6 小时前
LSTM论文解读
开发语言·python
獨枭7 小时前
C# 本地项目引用失效与恢复全攻略
开发语言·c#·visual studio
测试老哥7 小时前
软件测试之单元测试知识总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
buvsvdp50059ac7 小时前
如何在VSCode中设置Python解释器?
ide·vscode·python