查找二叉树中所有可能路径的最大乘积

时间:2018-05-16 01:21:58

标签: java algorithm binary-tree computer-science pseudocode

我在编写算法的伪代码时遇到问题,该伪代码找到二叉树中所有可能路径的最大乘积。

Problem is described in this link

1 个答案:

答案 0 :(得分:0)

它可以是任何路径的事实,以及存在负数的事实,这些事情使这变得复杂。否则它将是一个简单的递归。

但这里还有一个递归。

给定一个只有一个级别的子树,如下:

 A
B C   

然后你有A * B * C,或A * B,或A * C,或A,或B,或C的6种可能性。

给出一个像这样的更大的树:

  A
 X Y

其中X和Y本身就是树,然后考虑你有类似的6种可能的组合:

A

A *(来自X的任何潜在产品,包括X的根节点)*(来自Y的任何潜在产品,包括Y的根节点)

A *(来自X的任何潜在产品,包括X的根节点)

A *(来自Y的任何潜在产品,包括Y的根节点)

来自X的任何潜在产品

来自Y的任何潜在产品

这些产品中的任何一个都可能最终成为最大的产品。

所以现在你可以编写一个包含这6种可能性的递归函数,并从根节点开始调用函数。在该函数中,您将计算所有这6个产品(递归调用您的函数),如果这些产品中的任何一个大于全局最大值,则您有一个新的全局最大值。