二叉树中节点高度为负值是什么含义?height函数返回-1疑问
二叉树height函数返回-1的含义解释
这段代码里的-1不是表示二叉树的实际高度,而是作为一个异常/错误标记来使用,正常二叉树的高度不可能为负数。
从你给出的代码片段来看,这个height函数大概率是在计算高度的同时,额外做了某种合法性检查(最常见的场景是判断二叉树是否为平衡二叉树):
- 递归过程中,如果某个子树返回了
-1,说明该子树已经不符合检查条件(比如平衡二叉树要求左右子树高度差不超过1,若超过就返回-1),当前节点直接向上传递这个标记,终止后续无效计算。 - 只有当所有子树都符合条件时,函数才会返回正常的高度值(通常是左右子树高度的最大值加1)。
举个完整的常见实现示例,你就能更清楚:
int height(TreeNode root) { if (root == null) return 0; // 空树高度定义为0 int left = height(root.left); int right = height(root.right); if(left == -1 || right == -1) return -1; // 子树已不符合条件,直接返回标记 if (Math.abs(left - right) > 1) return -1; // 当前树高度差过大,标记为不符合 return Math.max(left, right) + 1; // 返回正常高度 }
简单来说,这里的-1是个“信号值”,用来告诉上层递归:当前路径下的子树不满足预设条件,不用继续计算高度了。
内容的提问来源于stack exchange,提问作者Amanda James
相关产品推荐
相关产品推荐

