递归函数未返回正确的值

时间:2019-02-26 19:58:51

标签: c++ recursion

我正在尝试查找给定的BST是否平衡。

所以我做了一个递归函数:叫做“ number_of_edge”

此函数以参数TreeNode *为根,然后从左侧和右侧计算到TreeNode直到树叶离开的节点数 然后从左侧减去节点数量,从右侧减去节点数量,以检查差异是否大于1,则表明树不平衡。

但是递归功能无法正确计算左右高度

输入:10 5 7 4 6 8 9

(输入时,第一个值是BST的根)

输出应该保持平衡,因为根的左高度等于2,右高度等于3,并且此处左右高度之差仅为1。

但是在我的代码中,它计算出左高度为2,右高度为零

代码

    int number_of_edge(Tree mytree, TreeNode* root)
{
    int leftheight = 0;
    int rightheight = 0;



    if (root->getleft() != NULL)
    {
        leftheight++;
        leftheight += number_of_edge(mytree, root->getleft());


    }

    if (root->getright() != NULL)
    {
        rightheight++;
        rightheight += number_of_edge(mytree, root->getright());


    }
    if (leftheight == rightheight)
        return leftheight;
    else if (leftheight > rightheight)
        return leftheight;
    else return rightheight;

}

0 个答案:

没有答案