当前位置:首页>python>Python 数据结构与算法 · 二叉树与递归体系总结

Python 数据结构与算法 · 二叉树与递归体系总结

  • 2026-08-26 18:58:28
Python 数据结构与算法 · 二叉树与递归体系总结
第一部分:递归(Recursion)

基础定义

递归 是一种通过函数调用自身来解决问题的编程方法。它把一个大型复杂的问题层层转化为一个与原问题相似的、规模更小的问题来求解。

递归必须满足两个核心要素

1.终止条件(Base Case):问题足够小,可以直接给出答案,不再继续调用自身。2.递推关系(Recursive Relation):将原问题拆解为子问题,并通过调用自身来解决子问题。

代码实现(以二叉树最大深度为例)

def maxDepth(root):    if root is None:          # ① 终止条件:空树的高度为 0        return 0    left_depth = maxDepth(root.left)   # ② 递:求左子树高度    right_depth = maxDepth(root.right) # ③ 递:求右子树高度(等②返回后才执行)    return max(left_depth, right_depth) + 1  # ④ 归:汇总结果

为什么要这样实现?(执行时序)

递归函数中:

调用自身之前的代码(如 left_depth = ...)在 “递(压栈)” 阶段执行。调用自身之后的代码(如 return max(...) + 1)在 “归(出栈)” 阶段执行。

因为“当前节点的高度”依赖于“左右子树的高度”,所以必须先完成子问题的计算(递到底),才能汇总结果(归回来)。这决定了汇总代码必须放在所有递归调用之后

引申

递归的优点是代码简洁、逻辑清晰,与数学归纳法思维一致。缺点在于系统调用栈空间有限,深度过大(如几万层)会导致栈溢出(RecursionError)。此时需要用迭代 + 手动栈替代。


第二部分:二叉树(Binary Tree)

基础定义

二叉树(Binary Tree) 是每个节点最多有两个子树的树结构。每个节点包含三个部分:

数据域(val指向左子树的指针(left指向右子树的指针(right

特殊的二叉树

满二叉树:每个节点要么是叶子,要么左右子树都存在。完全二叉树:除最后一层外,每层节点都填满,且最后一层的节点靠左排列。二叉搜索树(BST):左子树所有节点 < 根节点 < 右子树所有节点。

代码实现(二叉树节点定义)

class TreeNode:    def __init__(self, val=0, left=None, right=None):        self.val = val        self.left = left        self.right = right

第三部分:二叉树的遍历(Traversal)

基础定义

遍历 是按照某种顺序访问树中每一个节点且每个节点只访问一次的过程。二叉树遍历分为两大类:

深度优先搜索(DFS):沿着一条路径走到底,再回溯。包含三种顺序:

前序遍历:根 → 左 → 右中序遍历:左 → 根 → 右后序遍历:左 → 右 → 根


广度优先搜索(BFS):按层从上到下、从左到右依次访问,也叫层序遍历

代码实现(递归版)

def preorder(root):   # 前序    if not root: return []    return [root.val] + preorder(root.left) + preorder(root.right)def inorder(root):    # 中序    if not root: return []    return inorder(root.left) + [root.val] + inorder(root.right)def postorder(root):  # 后序    if not root: return []    return postorder(root.left) + postorder(root.right) + [root.val]

为什么要区分三种顺序?(设计理由)

三种顺序的本质区别是 根节点的访问时机

前序(根先访问):适用于需要“先创建父节点,再创建子节点”的场景。比如 React 的递归渲染,必须先把父 DOM 创建好,才能往里挂子组件。中序(根在中间):对于 BST,中序遍历结果必然升序。因此验证 BST 或按顺序输出 BST 数据时,中序是自然选择。后序(根最后访问):适用于需要“先处理子节点,再处理父节点”的场景。比如计算树的高度(必须先知道子树的高度),或者删除一个文件夹(必须先把子文件和子文件夹删干净,才能删除自己)。

引申

三种顺序的递归代码,只有 res.append(root.val) 这一行的位置不同,其余结构完全一致。如果要求非递归(迭代)实现,需要手动维护栈来模拟系统调用栈,中序和后序的迭代写法比前序更复杂,因为要处理“什么时候弹出并记录”的问题。


第四部分:二叉搜索树(BST)

基础定义

二叉搜索树(BST) 是一种特殊的二叉树,满足:

左子树上所有节点的值 都小于 根节点的值。右子树上所有节点的值 都大于 根节点的值。左右子树也各自是 BST。

核心性质

对 BST 进行中序遍历,得到的结果一定是严格升序的。 这是验证 BST 的最便捷方法。

代码实现(验证 BST,LeetCode 98)

def isValidBST(root):    prev = float('-inf')    def inorder(node):        nonlocal prev        if not node: return True        if not inorder(node.left): return False        if node.val <= prev: return False        prev = node.val        return inorder(node.right)    return inorder(root)

为什么要这样实现?

利用中序遍历的升序特性,只需记录上一个访问的节点值(prev),检查当前值是否严格大于它。不需要把整棵树转成数组再检查,节省空间(O(1) 额外空间,不算递归栈)。

引申

BST 的查找、插入、删除平均时间复杂度为 O(log n),前提是树保持平衡。如果插入顺序特殊(如升序插入),BST 会退化成链表,性能降为 O(n)。因此工程中常用 平衡二叉树(AVL) 或 红黑树


第五部分:二叉树直径(Diameter of Binary Tree,LeetCode 543)

基础定义

二叉树的直径 是指树中任意两个节点之间最长路径上的边数

这条路径不一定经过根节点路径长度按 边数 计算(一个节点到其子节点为 1 条边)。

代码实现

def diameterOfBinaryTree(root):    diameter = 0    def depth(node):        nonlocal diameter        if not node:            return 0        left = depth(node.left)        right = depth(node.right)        # 经过当前节点的最长路径 = left + right(边数)        diameter = max(diameter, left + right)        # 向上返回当前节点的高度(边数)        return max(left, right) + 1    depth(root)    return diameter

为什么要这样实现?(设计理由拆解)

1.为什么需要两个“出口”?

向上返回(return max(left, right) + 1:父节点需要知道“我这棵子树有多高”,才能计算经过父节点的路径。这是唯一能向上传递的信息。全局更新(diameter = max(...):直径是“经过当前节点的最长路径”,即 left + right。但这个值对父节点没有用(父节点只需要高度,不能把左右两边都拿上来),所以不能作为返回值,只能作为“副作用”记录在外部变量中。

2.为什么 left + right 能代表“经过当前节点的最长路径”?
经过当前节点的路径,必须从左子树的最深节点上来,穿过当前节点,再到右子树的最深节点。边数就是“左子树高度” + “右子树高度”。

3.为什么不能直接计算 maxDepth(root.left) + maxDepth(root.right)
因为直径可能不经过根节点。如果子树内部有一条更长的路径(比如左子树内部的路径长度就大于经过根的任何路径),则必须遍历每个节点,在每个节点处都尝试更新直径。

引申

这道题是后序遍历 + 全局变量的标准模板,与 LCA(最近公共祖先)共享同一套递归骨架。如果题目改成“路径上的节点数”,只需把 left + right 改为 left + right + 1 即可。


第六部分:手动栈模拟递归(Iteration with Explicit Stack)

基础定义

手动栈模拟 是指用程序员自己维护的栈数据结构,代替系统调用栈,来实现递归算法的迭代版本。

目的:避免递归深度过大导致栈溢出。代价:代码更复杂,需要额外维护状态(state 标记)和中间结果(如 height 字典)。

代码实现(以二叉树直径为例)

def diameterOfBinaryTree(root):    if not root: return 0    stack = [(root, 0)]  # 0 = 未处理子树,1 = 子树已处理    height = {None: 0}    diameter = 0    while stack:        node, state = stack.pop()        if state == 0:            # 递:压入当前节点(标记为待计算),再压入右、左子树            stack.append((node, 1))            if node.right:                stack.append((node.right, 0))            if node.left:                stack.append((node.left, 0))        else:            # 归:左右子树高度已经算好,存于 height 字典            left_h = height.get(node.left, 0)            right_h = height.get(node.right, 0)            diameter = max(diameter, left_h + right_h)            height[node] = max(left_h, right_h) + 1    return diameter

为什么要这样实现?

state 标记:递归中,系统栈帧记录了“我执行到哪一行了”。迭代中必须显式标记一个节点是“刚进来,还没处理子树”(state=0),还是“子树已处理完,该计算我了”(state=1)。压栈顺序:栈是 LIFO(后进先出)。为了先处理左子树,再处理右子树,必须 先压右,再压左,这样弹出时左子树先被处理。height 字典:递归中,子节点的高度存在栈帧的局部变量里(如 left_depth)。迭代中需要一个“外挂内存”来存储每个节点的高度,以便父节点在 state=1 时取出来用。

引申

手动栈能有效避免递归深度限制,适合处理深度不确定的树。但在工程中,除非确定递归会爆栈,否则优先使用递归,因为它更接近人类思维,维护成本低。


第七部分:回溯(Backtracking)

基础定义

回溯 是一种通过尝试所有可能的候选解来找出所有解的算法思想。它通常使用递归实现,其核心特征是:

在“递”的阶段做出一个选择(修改状态)。递归深入,探索该选择下的所有可能性。在“归”的阶段撤销该选择(恢复状态),以便尝试下一个候选。

回溯 = 暴力枚举 + 剪枝(可选)

代码实现(全排列,LeetCode 46)

def permute(nums):    res, path = [], []    used = [False] * len(nums)    def backtrack():        if len(path) == len(nums):            res.append(path[:])  # 拷贝,防止后续修改污染            return        for i in range(len(nums)):            if used[i]:                continue            # ① 递:做选择            path.append(nums[i])            used[i] = True            # ② 深入            backtrack()            # ③ 归:撤销选择            used[i] = False            path.pop()    backtrack()    return res

为什么要这样实现?

1. 为什么“做选择”和“撤销选择”必须成对出现?
因为 path 和 used 是全局共享的状态。如果当前分支探索完后不恢复,下一个分支会看到被污染的状态,导致结果重复或遗漏。撤销选择是回溯的“灵魂”。


2. 为什么 res.append(path[:]) 要拷贝,而不是直接 res.append(path)
因为 path 后续会不断被 pop 修改。如果不拷贝,res 中存的就是同一个列表对象的引用,最终所有结果都会变成最后的状态(空列表),这是 Python 中常见的“别名陷阱”。


3. 回溯的通用三问法

递时做什么:选择当前元素,修改状态,标记已用。深入:调用下一层递归。归时做什么:撤销上一步的选择,恢复状态,让下一个候选可以正常使用。

引申

回溯适用于组合、排列、子集、N 皇后、数独等所有搜索类问题。剪枝 是在“递”的入口处,提前判断当前路径已经不可能得到有效解,直接 return,避免无谓的深入。正则表达式引擎的 NFA 匹配,本质就是回溯,可能引发“灾难性回溯”(Catastrophic Backtracking)。


第八部分:工程能力引申(GitHub / 开源项目映射)

算法 / 数据结构
工程映射
具体解释
递归渲染
React / Vue 组件树渲染
前序遍历:父组件先创建 DOM,再递归渲染子组件
状态树合并
Redux / Vuex 的 reducer 合并
combineReducers
 本质就是合并多棵状态树
树的序列化
配置文件 / AST 持久化
用前序 + null 标记结构,可完全还原
BST(二叉搜索树)
数据库索引(B-Tree)
有序查找结构,中序遍历即为有序数据
后序遍历
删除文件夹
shutil.rmtree
 必须后序删除:先删子文件,再删自己
回溯算法
正则表达式引擎的 NFA 匹配
正则匹配时的“回溯”机制与此完全一致,可能导致灾难性回溯
手动栈
深度优先爬虫(避免递归深度限制)
Scrapy 调度器用显式栈管理待爬 URL,避免递归过深

第九部分:总结与进阶路线图

你现在已经具备以下核心能力:

✅ 能精准分析递归函数的“递”与“归”执行时序✅ 熟练掌握二叉树的前、中、后、层四种遍历,并理解其工程映射✅ 能独立推导翻转、合并、BST 验证、LCA、直径等经典题目的代码设计逻辑✅ 理解递归与迭代(手动栈)的互换本质,知道迭代要额外维护状态和中间结果✅ 掌握回溯的“做选择 → 递归 → 撤销选择”通用模板,理解状态恢复的必要性

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-27 07:45:10 HTTP/2.0 GET : https://f.mffb.com.cn/a/512286.html
  2. 运行时间 : 0.287771s [ 吞吐率:3.47req/s ] 内存消耗:4,789.67kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cc5563a9deeec2c70fa57bd3293654b3
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001034s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001386s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002850s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.018282s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001401s ]
  6. SELECT * FROM `set` [ RunTime:0.004734s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001615s ]
  8. SELECT * FROM `article` WHERE `id` = 512286 LIMIT 1 [ RunTime:0.001166s ]
  9. UPDATE `article` SET `lasttime` = 1787787910 WHERE `id` = 512286 [ RunTime:0.047489s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.004514s ]
  11. SELECT * FROM `article` WHERE `id` < 512286 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001560s ]
  12. SELECT * FROM `article` WHERE `id` > 512286 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001149s ]
  13. SELECT * FROM `article` WHERE `id` < 512286 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002487s ]
  14. SELECT * FROM `article` WHERE `id` < 512286 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002182s ]
  15. SELECT * FROM `article` WHERE `id` < 512286 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.029649s ]
0.291596s