二叉树中求最短通路
来源:百度知道 编辑:UC知道 时间:2024/05/05 04:17:13
开始做离散数学作业 题目
大概是说1000个人比赛 没有平局 胜者进下一局
最后一共要进行多少场比赛才能得到冠军(等于求边 999)
开始看错题目了,看成冠军要进行多少场比赛..一直没算出来.
现在想将错就错,想弄出来,求帮忙.大概思路..
因为最近学的是java想问下能不能用java做出来?所以贪心的发到这里来了 呵呵
一直除以二 现在根哪里花条线平分 然后在左子女的顶点继续花
画得次数就是比赛次数
但是到125了 怎么除...
大概是说1000个人比赛 没有平局 胜者进下一局
最后一共要进行多少场比赛才能得到冠军(等于求边 999)
开始看错题目了,看成冠军要进行多少场比赛..一直没算出来.
现在想将错就错,想弄出来,求帮忙.大概思路..
因为最近学的是java想问下能不能用java做出来?所以贪心的发到这里来了 呵呵
一直除以二 现在根哪里花条线平分 然后在左子女的顶点继续花
画得次数就是比赛次数
但是到125了 怎么除...
这道题条件给的有点假,1000人两两比赛,胜者直接晋级,到单数人局怎么办呢?
应该把参加人数改成2的N次幂,这样按照你的规则2**n个选手参赛要得到冠军,可以构造一个有(1+2**1+2**2+..+2**n)个节点的满二叉树,这棵树的深度即要获得冠军需要参赛的场数.
代码实现应该不是很复杂,用不用Java都无所谓的.
还有就是二叉树不存在最短通路这个概念,你说的那个是图,二叉树中有一个最小带权值,即哈夫曼树.
大哥你敢去别的区么~我看见离散这2字头都疼~
int counter = 0;
int amount = 1;
while(amount<1000){
counter++;
amount=amount+amount;
}
//output counter and counter-1