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

我的JavaScript二叉树CountHeight函数存在什么问题?

二叉树高度计算错误的排查与解决

嘿,这个问题我碰到好多次了!先帮你理清楚:你说的那棵树结构应该是这样的吧?

10
   /  \
  4   15
 /
8

按节点层数算的话,高度确实是3,但你的函数返回2,十有八九是递归逻辑的终止条件或者计算步骤写错了。

最常见的错误原因

很多新手写高度计算函数时,容易漏掉当前节点的层数,比如写出这样的错误代码:

def wrong_height(root):
    if not root:
        return 0
    left = wrong_height(root.left)
    right = wrong_height(root.right)
    return max(left, right)

这个函数算出来的是边数(从根到叶子的路径上的边的数量),所以你的树会返回2,但你要的是节点数的高度,就得在取最大值后加1。

正确的实现代码

如果是按节点数计算高度,正确的递归写法应该是这样(拿Python举例,其他语言逻辑一样):

def get_tree_height(root):
    # 空树的高度定义为0
    if not root:
        return 0
    # 递归计算左右子树的高度
    left_height = get_tree_height(root.left)
    right_height = get_tree_height(root.right)
    # 当前节点的高度 = 左右子树的最大高度 + 自身这一层
    return max(left_height, right_height) + 1

用你的树测试一下:

  • 节点8的左右子节点都是空,返回 max(0,0)+1=1
  • 节点4的右子节点为空,左子节点高度是1,返回 max(1,0)+1=2
  • 节点15的左右子节点为空,返回1
  • 根节点10取左右子树的最大高度2,加1后得到3,完美符合你的预期!

额外排查点

如果换了正确代码还是不对,那得检查你构建树的逻辑了——是不是节点8没有正确挂载到节点4的left或right属性上?比如不小心把8挂成了10的另一个子节点,那树的高度就真的是2了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:36:08