标题:[求助]随机生成n个结点二叉树的算法
取消只看楼主
sonfly
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-5
 问题点数:0 回复次数:1 
[求助]随机生成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)是什么意思……死活不懂,望高手灌顶!

搜索更多相关主题的帖子: 二叉树 结点 BiTNode 算法 rand 
2007-09-22 12:28
sonfly
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-5
得分:0 
谢谢大家 明白啦!
2007-09-23 10:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-172032-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.899860 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved