一个小编程题,感觉挺难,高手进来指点一下

cfxinxin 2008-12-20 02:32:53
参加了一个欧美公司的上机考试,4个题3小时时间,其中一个问题我实在不太明白怎么编出来,可能大学基础没弄好。。。

题目如下:

程序运行生成一棵随机二叉树,这个二叉树拥有20个子节点,每次生成的二叉树不能相同,并且不能为如图样式。


图片弄不来,我大概说下图片的样子,一棵是从根节点开始只有左子树,另外一棵是一个根节点连接着同一层的19个节点。


疑惑的地方:

1.它生成的树就是随意的一个数列?
2.各个节点怎么才能描述出来呢?
...全文
123 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoxiongbo 2008-12-21
  • 打赏
  • 举报
回复
看似不明白
cfxinxin 2008-12-21
  • 打赏
  • 举报
回复
我当时有个想法。

1,把21个数存在数组中。

2. 取0到1之间的随机数,取小数点后的第一位。

3.在数组中取得这个索引所代表的数,作为生成的树的根节点。

4.像取根一样,随机取数排列在这个根后面。。

5.生成数列 a,c,d,f,g,e.......

6.文字表示"先序遍历表示:",system.out.println(生成的数列)

这样做好像是能出来,问题是能解决,但是仔细想想,有点投机取巧,这个左右节点完全没考虑,而是直接输出的,那很容易就出现题目里面所禁止的那两种树。
jFresH_MaN 2008-12-20
  • 打赏
  • 举报
回复
我的想法是,递规随机往已经构造好的树的其中一个叶节点加一个左子节点或者右子节点.

1.现有N(N=0,1,2,,,20)个节点构成的一棵二叉树.
2.if(N=20), exit.
else 把所有叶节点编号,假设有M个节点,用Random.NextInt得出一个随机整形值介于1和M之间.
3.在选出的那个叶节点上面随机创建一个左子节点或者右子节点,构造节点数为N+1的二叉树.

bobskay 2008-12-20
  • 打赏
  • 举报
回复
平衡二叉树
网上有例子,随便搜下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧