C语言 FindHeight(二叉树)方法总是返回1?


int findHeight(struct BstNode* root)
{
if(root==NULL)
return -1;
return max(findHeight(root->left),findHeight(root->right))+1;
}

该函数始终返回 1 作为高度。
这是代码链接。 https://github.com/ashwinidotx/OpenIssues/blob/master/Height%20Of%20Binary%20Tree.c

代码有问题。当您到达叶节点之外时,您返回的是错误的-1。这是在计算树高时做减法。你应该简单地在这里返回0因为你到达了终点,那里没有节点。

这是更正的方法:

int findHeight(struct BstNode* root)
{
if(root == NULL)
return 0;
return 1 + max(findHeight(root->left), findHeight(root->right));
}

最新更新