在二进制图中到达根节点的方法数量?

时间:2014-02-27 21:55:07

标签: java algorithm graph dynamic-programming graph-algorithm

在下面的图表结构中,我们可以通过多少种方式从底层到达顶层?他们对这个问题有任何递归定义吗?假设我们不能在一个步骤之后处于同一层,我们总是朝着根节点或峰值移动。

  O
 O O
O O O

这里n = 3(底层的#nodes =图的高度+ 1)。对于此图表,我们有4种方法可以从底层移动到峰值。我们如何将其概括为任何'n'?另外,我们如何使用动态编程来实现这一目标?

2 个答案:

答案 0 :(得分:3)

假设从给定节点开始只能向上或向上爬,那么结果似乎是2 ^ N,其中N是树高。

说明:来自节点(i,j)的路径数是c(i,j)= c(i-1,j-1)+ c(i-1,j)。这将产生pascal triangle,其中每个级别N的总和为2 ^ N.

答案 1 :(得分:0)

另一种观点:
让我们称c(n)从深度为n的层导致顶部的方式的数量,因此我们有c(0)= 1。由于n-1层中的每个节点可以通过两种不同的方式从层n(从左侧或从右侧)到达,因此我们有c(n)= 2 * c(n-1)。将其与c(0)= 1组合导致c(n)= 2 ^ n。