int get_mid(node* &a,int n)
{
    if(a==NULL);
    else
    {
        get_mid(a->lch,n);
        con++;
        if(con==(n+1)/2)
        {    
            k=a->x;
            return k; //这里return值返回到上一层 递归最后会丢失值
        }
        get_mid(a->rch,n);
    }
}

中序遍历时,我想在达到目的时直接结束递归,但是return只是向上一层返回,最后的返回值不是中间return出来的。因为递归时用栈来存的,所以最后的返回值时不一样的。

可以用全局变量把中间想要的东西都存下来,或者设置一个flag在适时的时候跳出。或者写成非递归的形式,用栈来实现队规操作。

最近莫名其妙的菜,太久不学习,以前的东西全忘了,难顶。