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在适时的时候跳出。或者写成非递归的形式,用栈来实现队规操作。
最近莫名其妙的菜,太久不学习,以前的东西全忘了,难顶。