找回密码
 FreeOZ用户注册
查看: 4790|回复: 64
打印 上一主题 下一主题

[IT技术] 树的遍历, 判断子孙問題,求最有效率算法

[复制链接]
跳转到指定楼层
1#
发表于 4-6-2015 15:19:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
好吧。。。我已经一脑子浆糊。。。。。。。。。。

一颗巨大的树
判断一個A节点是另外一個节点B的子孙。。。
我想到的两种方法
(1)
递归看B的childeren有没有A。。有A的返回。。。 没有的话要遍历所有子孙
(2)
递归看A的parent有没有B。。   有B的返回   没有的话要到ROOT

哪个更有效率哇。。。還是有更有效率的方法
還是根本就没有更有效率的方法。。

我目前用(2)。至少遍历是单线
回复  

使用道具 举报

2#
 楼主| 发表于 4-6-2015 15:20:28 | 只看该作者
回复  

使用道具 举报

3#
 楼主| 发表于 4-6-2015 15:25:50 | 只看该作者
貌似根據AB节点的位置不同。。最短路径都会不同。。。。
回复  

使用道具 举报

4#
发表于 4-6-2015 15:29:51 | 只看该作者
毫无疑问2最优

评分

参与人数 1威望 +50 收起 理由
周星星1832 + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

5#
 楼主| 发表于 4-6-2015 15:31:00 | 只看该作者

我也是这种感觉
回复  

使用道具 举报

6#
发表于 4-6-2015 15:48:10 来自手机 | 只看该作者
肯定是2啊。。。b如果有x个children, A在第y层,1要走x^y, 2只要走y

评分

参与人数 1威望 +50 收起 理由
周星星1832 + 50 你太有才了!

查看全部评分

回复  

使用道具 举报

7#
 楼主| 发表于 4-6-2015 15:56:38 | 只看该作者
浮云云艾米莉 发表于 4-6-2015 14:48
肯定是2啊。。。b如果有x个children, A在第y层,1要走x^y, 2只要走y

也不一定。。
如果A是B的子孙。。且是很近的子孙。。而且树枝少的话。。。很快就找到了
但是方法二要一直遍历到root。。
回复  

使用道具 举报

8#
发表于 4-6-2015 16:09:24 | 只看该作者
怎么完全蒙圈了
回复  

使用道具 举报

9#
发表于 4-6-2015 16:13:25 | 只看该作者
运算复杂度应该选最坏情况计算

如果A是B的子孙,方法1的运算复杂度是AB层数差是指数关系,方法2是AB层数差的线性关系
如果A不是B的子孙,方法1的运算复杂度是B到最远叶子层数的指数关系,方法2是A层数的线性关系

综上,方法2胜出

评分

参与人数 1威望 +50 收起 理由
周星星1832 + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

10#
 楼主| 发表于 4-6-2015 16:16:57 | 只看该作者
ArBen 发表于 4-6-2015 15:09
怎么完全蒙圈了

你是IT吗
回复  

使用道具 举报

11#
 楼主| 发表于 4-6-2015 16:23:00 | 只看该作者
melody_iic 发表于 4-6-2015 15:13
运算复杂度应该选最坏情况计算

如果A是B的子孙,方法1的运算复杂度是AB层数差是指数关系,方法2是AB层数 ...

是不是还应该结合实际应用情况来看。。。

判断子孙是肯定要的。。。

但是是子孙的情况比较少。。因為是子孙属于用户判断错误。。。多数情况用户判断应该是正确的
也就是说多数情况下应该不是子孙。。是parent。。。。

所以還是2胜出。。。
回复  

使用道具 举报

12#
发表于 4-6-2015 16:27:24 | 只看该作者
理论结合实际,正解

评分

参与人数 1威望 +50 收起 理由
周星星1832 + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

13#
发表于 4-6-2015 16:28:45 | 只看该作者

不是 完全早不到节奏
回复  

使用道具 举报

14#
 楼主| 发表于 4-6-2015 16:36:38 | 只看该作者
melody_iic 发表于 4-6-2015 15:27
理论结合实际,正解

清醒了我
回复  

使用道具 举报

15#
 楼主| 发表于 4-6-2015 16:36:53 | 只看该作者
ArBen 发表于 4-6-2015 15:28
不是 完全早不到节奏

那你肯定完全不懂
回复  

使用道具 举报

16#
发表于 4-6-2015 17:08:16 | 只看该作者

你能写不是挨踢男禁入不
回复  

使用道具 举报

17#
 楼主| 发表于 4-6-2015 17:09:53 | 只看该作者
ArBen 发表于 4-6-2015 16:08
你能写不是挨踢男禁入不

脑补一下挨踢知识也是好的
回复  

使用道具 举报

18#
发表于 4-6-2015 17:11:27 | 只看该作者
周星星1832 发表于 4-6-2015 16:09
脑补一下挨踢知识也是好的

会帮助泡妞嘛
回复  

使用道具 举报

19#
 楼主| 发表于 4-6-2015 17:12:30 | 只看该作者
补一下应用情况
用户需要给子树设置新的parent
所以在设置前系统需要判断是不是能设置
也就是不能让子树节点作为parent
回复  

使用道具 举报

20#
发表于 4-6-2015 17:30:41 | 只看该作者

弄点大家都懂的挨踢题目给我们玩玩
回复  

使用道具 举报

21#
 楼主| 发表于 4-6-2015 17:31:41 | 只看该作者

你的人生能不能有点更高的追求
回复  

使用道具 举报

22#
 楼主| 发表于 4-6-2015 17:32:08 | 只看该作者
MICHELLE07 发表于 4-6-2015 16:30
弄点大家都懂的挨踢题目给我们玩玩

今天头都大了。。
回复  

使用道具 举报

23#
发表于 4-6-2015 17:53:18 | 只看该作者
周星星1832 发表于 4-6-2015 16:31
你的人生能不能有点更高的追求

难 就介点出息了
回复  

使用道具 举报

24#
 楼主| 发表于 4-6-2015 19:14:30 | 只看该作者
ArBen 发表于 4-6-2015 16:53
难 就介点出息了

你就不能投入的爱一次
回复  

使用道具 举报

25#
发表于 4-6-2015 19:20:26 | 只看该作者
周星星1832 发表于 4-6-2015 18:14
你就不能投入的爱一次

你就不能投入的爱一次
回复  

使用道具 举报

26#
 楼主| 发表于 4-6-2015 19:31:21 | 只看该作者
ArBen 发表于 4-6-2015 18:20
你就不能投入的爱一次

我每次都很投入
回复  

使用道具 举报

27#
发表于 4-6-2015 19:43:59 | 只看该作者

一共几次
回复  

使用道具 举报

28#
发表于 4-6-2015 19:44:05 | 只看该作者

一共几次
回复  

使用道具 举报

29#
 楼主| 发表于 4-6-2015 19:46:42 | 只看该作者

2次。。。。我只谈过两次恋爱
回复  

使用道具 举报

30#
发表于 4-6-2015 21:26:39 | 只看该作者
周星星1832 发表于 4-6-2015 18:46
2次。。。。我只谈过两次恋爱

读书少 你不要骗俺
回复  

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+11, 11-2-2025 17:24 , Processed in 0.061660 second(s), 45 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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