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

Python DFS实现中max函数如何计算二叉树的高度?

解释max(dfs(root.left), dfs(root.right)) + 1计算树高度的逻辑

这行代码是深度优先搜索(DFS)递归计算树高度的核心,我们拆解每一部分的作用:

  • 递归终止基础
    嵌套的dfs函数里,if not root: return 0是递归终止条件:空节点没有高度,直接返回0,这是整个递归的基础。

  • 递归计算子树高度

    • dfs(root.left):递归遍历当前节点的左子树,最终返回左子树的「节点数高度」——也就是从左子树根到最深叶子节点的路径上包含的节点总数。
    • dfs(root.right):同理,返回右子树的「节点数高度」。
  • 取最长子树路径
    max(dfs(root.left), dfs(root.right))会从左右子树的高度中挑选出较大的值,这一步是为了找到当前节点往下延伸的最长路径——树的高度由整棵树里最长的那条路径决定。

  • 加上当前节点
    +1是把当前节点本身计入高度,因为当前节点是这条最长路径的起点,所以要在子树最长路径的节点数基础上加1,得到以当前节点为根的整个子树的节点数高度。

实际示例:

假设当前节点的左子树是一个3节点的链式结构(根→左孩子→左孙子),dfs(root.left)会返回3;右子树只有1个节点,dfs(root.right)返回1。max(3,1)取3,加1后得到4,这就是当前节点为根的子树的节点数高度(如果要转换成常用的边数高度,就减1得到3)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:25:03