【发布时间】:2018-09-16 14:39:05
【问题描述】:
对于空二叉树的所有情况,我都得到了正确的高度。大小应该为零,但我得到 1。我尝试在 if 语句之后更改返回值(去掉 +1),但这只会弄乱其他情况。
int BTree::recursive_height_helper(BSTNode *n) {
int rHeight = 0;
int lHeight = 0;
if(n->right == NULL || n->left == NULL) return rHeight+lHeight+1;
rHeight += recursive_height_helper(n->right);
lHeight += recursive_height_helper(n->left);
return rHeight+lHeight+1;
}
【问题讨论】:
-
除非我误解了你的函数应该如何工作,否则你传入一个根节点,不是吗?在这种情况下,高度不能小于 1,因为该根节点是整个树。如果您传入一个空指针,该指针将为空,您的函数将失败。如果你处理空指针的情况,那么你可以传入一个真正的空树,然后返回 0。我可能误解了您的情况 - 在这种情况下,您可以澄清一下。
-
一棵树的高度不是 1 加上子树的高度之和。它应该是 1 加上子树高度的最大值。
-
啊,我明白了。我想多了。谢谢。
标签: c++ recursion binary-tree