找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 539|回复: 4

[求助]随机生成n个结点二叉树的算法

[复制链接]
发表于 2009-11-3 01:25:15 | 显示全部楼层 |阅读模式 IP:江苏扬州
片段如下:
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)是什么意思……死活不懂,望高手灌顶!
发表于 2009-11-3 01:25:18 | 显示全部楼层 IP:江苏扬州
P->data = rand() % 999 + 1 ;//为什么要加1 ?
保证生成的数在1-999之间.这个可能是题目的要求.
int nl=rand() % (n); //保证左子树个数不会超过总结点数.
P->left = Generate(nl);//左子树的结点个数
P->right = Generate(n-1-nl);//右子树结点个数当然是n-n1-1(其中1是根嘛)

递归退出就是在
if (n==0)
return NULL;
回复

使用道具 举报

发表于 2009-11-3 01:25:33 | 显示全部楼层 IP:江苏扬州
P->data = rand() % 999 + 1 ;//为什么要加1 ?
因为是从0开始的
回复

使用道具 举报

发表于 2009-11-3 01:25:34 | 显示全部楼层 IP:江苏扬州
谢谢大家 明白啦!
回复

使用道具 举报

发表于 2009-11-4 06:05:08 | 显示全部楼层 IP:澳大利亚
偶的天啊!这是什么样的贴子呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 07:39 , Processed in 0.326469 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表