[求助]随机生成n个结点二叉树的算法
片段如下:
struct BiTNode
{
int data;
BiTNode *left;
BiTNode *right;
};
BiTNode *Tree; //根指针
cin<<i;
srand(i); //指定随机数种子,相同的种子将产生相同的数据序列
rand();
BiTNode *Generate(int n) //n为树的结点数
{
if (n==0)
return NULL;
BiTNode *P = new BiTNode;
P->data = rand() % 999 + 1 ;//为什么要加1 ?
int nl=rand() % (n);
P->left = Generate(nl);
P->right = Generate(n-1-nl);
return P;
}
搞不懂递归何时退出? 关键是Generate(n-1-nl)是什么意思……死活不懂,望高手灌顶!