给定树的根,其中每条边具有相关的成本。找到访问树的每个节点的最低成本。
我想到的一个递归解决方案是:
这种做法是否正确?
有没有更好的方法来解决问题?
答案 0 :(得分:5)
edges * 2
。答案应该是:
sum(cost(edge)*2) - sum(edge which in the path)
我检查了你的解决方案,我认为这是错的(如果我误解了你的解决方案,请发表评论):
减去具有最高费用的孩子的边缘成本。("贪婪" - 我们>不想从孩子那里回溯,这会带来最高的成本)。
那个孩子将是一棵树,一些边缘必须访问两次。例如:
A
/ \
B C
/ \
D E
您无法访问所有边的子树一次以访问所有节点。
答案 1 :(得分:0)
1-除最后一个叶节点外,所有节点路径都将被访问两次。
2-我们需要找出哪个叶子节点附加了访问根节点的最高成本。
3-一旦我们发现这一点,我们将需要进行遍历,使得此叶节点是最后访问的节点。