| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 395 人关注过本帖
标题:搞了一个下午啊,一个下午啊!Binary Tree的 内部节点(internal node)的 ...
只看楼主 加入收藏
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
结帖率:98.63%
收藏
已结贴  问题点数:20 回复次数:5 
搞了一个下午啊,一个下午啊!Binary Tree的 内部节点(internal node)的 path length 原来是这么用递归写的,尼 玛啊一个下午啊
拿出来分享一下
程序代码:

 int pathLength(TARGETSET *set, int value) {

     if(set == NULL)  return 0;

     if(set->left == NULL && set->right == NULL)  return value ;

     return value + pathLength(set->left,value+1) + pathLength(set->right,value+1);

 }

调用的时候直接把value 设成0就好

[ 本帖最后由 madfrogme 于 2012-6-18 23:41 编辑 ]
2012-06-18 23:37
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
程序代码:
int pathLength(TARGETSET *set) {

     if(set == NULL)  return 0;

     int lLength, rLength;
     lLength = pathLength(set->left);
     rLength = pathLength(set->right);

     return 1 + (lLength>rLength ? lLength : rLength);
}

2012-06-19 18:01
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 2楼 demonleer
可能你修改后的代码不是求 所有内部节点加在一起的 path length了

而是求一个Binary tree 的最大深度了(root的深度为0的话, 应该把return 0 改成 -1吧)

求内部节点path length的主要目的也就应该是判断Binary tree的性能吧,即是:我们需要比较多少次来找到我们需要的key

因为这个问题和key的internal path length 有直接关系,问题也可就可以转换为n 个key的binary tree,它的平均internal path length为多少了

如果没说错应该约等于 2ln(2)lg(n)  即 1.39lg(n)吧

The quieter you become, the more you can hear
2012-06-19 18:49
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:20 
嗯,我的代码就是求树深度的。

root的深度为0为什么要把return 0 改成 -1?
2012-06-19 19:04
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
aaaa

[ 本帖最后由 madfrogme 于 2012-6-19 19:20 编辑 ]

The quieter you become, the more you can hear
2012-06-19 19:18
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用demonleer在2012-6-19 19:04:54的发言:

嗯,我的代码就是求树深度的。

root的深度为0为什么要把return 0 改成 -1?

因为看所有的地方都会说root的深度为0

所以不改为-1的话,最后相当于把root 也加了一个1进去

所以结果也就大1了

我是这么觉得的,而且编译一下好像确实是这么回事

若果有截屏证明我错了的话,我也会再验证一遍的

The quieter you become, the more you can hear
2012-06-19 19:19
快速回复:搞了一个下午啊,一个下午啊!Binary Tree的 内部节点(internal node ...
数据加载中...
 
   



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

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