(二叉树的)FindHeight方法始终返回1?

时间:2018-09-12 11:17:09

标签: c data-structures binary-tree

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 :(得分:1)

代码有错误。当您到达叶节点之外时,您将返回-1,这是错误的。这是对树高的计算进行减法。您只需在此处返回0,因为您到达了终点,那里没有节点。

这是更正的方法:

int findHeight(struct BstNode* root)
{
    if(root == NULL)
        return 0;

    return 1 + max(findHeight(root->left), findHeight(root->right));
}