查找最小节点,然后返回不在BST中的下一个最小自然值

时间:2019-04-27 12:11:19

标签: recursion binary-search-tree minimum avl-tree

所以我有一个问题,我有解决这个问题的算法,但是我似乎无法将其转换为C语言中的代码。

问题:给定一个AVL树,返回不在树中的下一个最小自然值。

示例:如果树中的最小值为2,则应确定3是否为树中的节点之一,如果不是,则应返回值3,如果为3,则应看到如果树上有4,依此类推...

O(logn)中有效的问题的算法(当n是在树中找到的节点数时):

首先,我们检查node-> size = node-> key-TreeMinimum 如果是,请转到树的右侧。 如果否,则转到左侧。 当我们达到NULL时,我们应该返回我们访问的最后一个节点的值加1。 节点的大小是该节点下的节点数,包括节点本身。 我用c语言编写了此代码,但似乎不起作用:

int next_missing( AVLNodePtr tnode )
{
    int x,y;
    if(tnode==NULL)
    {
        return (tnode->key)+1;
    }
    if(tnode->size == tnode->key - FindMin(tnode))
         x = next_missing(tnode->child[1]);
    if(tnode->size != tnode->key - FindMin(tnode))
         y = next_missing(tnode->child[0]);

     if(x>y) return y;
    else return x;
}

任何有关如何修复代码的帮助/提示都将不胜感激。 谢谢。

0 个答案:

没有答案