【发布时间】:2013-04-04 14:54:22
【问题描述】:
一棵树可以通过删除其中一条边分成两棵不同的树。给定一棵具有N 节点的树,该节点由[0, N-1] 范围内的整数唯一标识,我需要编写一个函数来查找需要从树中删除的边,这样所有节点的总和之间的差结果树中的 ID 被最小化。
该函数应该将它发现的最小差异打印到标准输出 (stdout)。
该函数将接收以下参数:
parent 是一个整数数组,其含义如下:parent[i] = 节点 i 的父节点(更具体地说是其 ID)
parent[i] = -1如果我没有父母(我是树的根)
数据限制
树中的最大节点数为 50,000
效率限制
该函数预计会在不到 2 秒的时间内打印出结果
示例
Input parent: [1, 4, 4, 2, -1, 2, 2]
aka : 4
/ \
1 2
/ / | \
0 3 5 6
Output: 9
说明:我们移除节点 2 和 6 之间的边。
【问题讨论】:
-
你能详细说明你卡在哪里了吗?你有任何开始使用的代码吗?
标签: algorithm graph tree graph-algorithm depth-first-search