二叉树中求最短通路

来源:百度知道 编辑:UC知道 时间:2024/05/05 04:17:13
开始做离散数学作业 题目
大概是说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