在下面的图表结构中,我们可以通过多少种方式从底层到达顶层?他们对这个问题有任何递归定义吗?假设我们不能在一个步骤之后处于同一层,我们总是朝着根节点或峰值移动。
O
O O
O O O
这里n = 3(底层的#nodes =图的高度+ 1)。对于此图表,我们有4种方法可以从底层移动到峰值。我们如何将其概括为任何'n'?另外,我们如何使用动态编程来实现这一目标?
答案 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。