求一个图论算法

homme1986 2009-10-14 12:18:36
(C语言区也发了)

求赋值树相邻两个分枝权值的最大值

举个例子,构造tree如下:

0 -1 0 -1 0 0 1 3 1 4 2 4 2 2 3 3 3 3

第一个数表示节点,第二个表示权值,以此类推。
0
-1/ |-1 \0
/ | \
1 2 3
3/ \4 4/ \2 3/ \3

对于这个树,满足条件的权值为7,即左下角的branch。

对于节点比较少的情况,我是用BFS把整个tree遍历找到满足条件的branch。不过这个方法比较笨了。

求教各位大侠给个更好的算法,适合大量节点(n < 500000).
...全文
79 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
euroman 2009-10-14
  • 打赏
  • 举报
回复
其实树的数据结构可以用直接用数组表示咯
根据你现在的这个数,我个人会觉得,如果没有到树叶子,其他层里面的除了0层和最后一层,中间所有层中每层所含的节点数都是3

那么假设你最后一层的叶子数目是N,一共有M+2层,
那么也就是说,
进行对中间M层内的节点内的数值进行两两求和比较,然后对最后的一层的叶子的数值两两求和比较

这样就是T(N^2 + 1 + 3 * M) = O(N^2 + 1 + 3 * M)
假设N > M
那么复杂度就是O(N^2 + 3 × N + 1)= O(N^2)
firePhoenix1981 2009-10-14
  • 打赏
  • 举报
回复
不是很明白赋值树的含义。
从你的描述上来看,关键是找到相邻节点的下标关系,这应该不难。但是我不清楚赋值树,只能提一下

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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