FindHeight(二叉树的)方法总是 returns 1?
FindHeight (of a binary tree) method always returns 1?
int findHeight(struct BstNode* root)
{
if(root==NULL)
return -1;
return max(findHeight(root->left),findHeight(root->right))+1;
}
函数总是returns1作为高度。
这是代码 link。
https://github.com/ashwinidotx/OpenIssues/blob/master/Height%20Of%20Binary%20Tree.c
代码有问题。当您超出叶节点时,您 returning -1
是错误的。这是在计算树高时做减法。你应该在这里简单地 return 0
因为你到达终点,那里没有节点。
这里是更正的方法:
int findHeight(struct BstNode* root)
{
if(root == NULL)
return 0;
return 1 + max(findHeight(root->left), findHeight(root->right));
}
int findHeight(struct BstNode* root)
{
if(root==NULL)
return -1;
return max(findHeight(root->left),findHeight(root->right))+1;
}
函数总是returns1作为高度。
这是代码 link。
https://github.com/ashwinidotx/OpenIssues/blob/master/Height%20Of%20Binary%20Tree.c
代码有问题。当您超出叶节点时,您 returning -1
是错误的。这是在计算树高时做减法。你应该在这里简单地 return 0
因为你到达终点,那里没有节点。
这里是更正的方法:
int findHeight(struct BstNode* root)
{
if(root == NULL)
return 0;
return 1 + max(findHeight(root->left), findHeight(root->right));
}