如何确定访问root树的k leave节点的最小步骤?

时间:2016-01-10 13:20:26

标签: algorithm math data-structures graph tree

算法即将访问k离开节点并以最小步骤返回到根节点!!

enter image description here

认为这是一个站在第2点的人,他/她想以最小的步骤访问树的叶子,然后回到第2点。

对于k = 3,路径可以像

2→ “3” - > 2-> 1-> “0” - > 1-> “5” - > 1-> 2(此处3,0,5为叶子) 所以我们访问了3个水平..

答案:8

1 个答案:

答案 0 :(得分:1)

这是根树上另一个自下而上的动态程序。

对于每个子树,我们计算访问j的{​​{1}}个叶子的成本,作为列表。如果子树是单个叶子,则此列表为j in 0…k,其中[0, 0, ∞, ∞, …, ∞]表示无穷大,表示不可行的叶子数量。否则,我们计算每个子节点的列表,将每个列表中除第一个条目之外的所有条目增加,然后通过卷积减少。要合并两个列表2A,需要计算B。返回根目录的[min {A[i] + B[j-i]: i in 0…j}: j in 0…k]条目。

这是k - 时间。