You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请问这段翻转二叉树的递归代码属于Top-down还是Bottom-up递归?

翻转二叉树递归代码类型判断

请判断以下这段翻转二叉树的Python递归代码属于Top-down递归还是Bottom-up递归?

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        if not root:
            return None
        left = self.invertTree(root.left)
        right = self.invertTree(root.right)
        root.right = left
        root.left = right
        return root

我个人认为这是Bottom-up递归,理由是先修改底层节点,再向上处理根节点。

结论

这段代码确实是Bottom-up(自底向上)递归。

原因分析

  • 自底向上递归的核心逻辑是先递归处理所有子问题(子树),再基于子问题的结果处理当前节点。
  • 这段代码中,先递归完成左子树和右子树的翻转,得到处理后的left和right节点,之后才交换当前根节点的左右子节点。整个过程从最底层的叶子节点开始完成翻转,逐步向上传递结果,最终完成整棵树的翻转。
  • 而Top-down(自顶向下)递归的特征是先处理当前节点逻辑,再递归处理子节点,这段代码显然不符合该特征。

内容的提问来源于stack exchange,提问作者Shrayus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 16:07:06