可以形成多少种类型的不同的二叉树,其高度为h?如果我们只知道二叉树的高度,并且我们将根 - 左和右 - 右视为同一棵树结构,这意味着如果二叉树的高度等于1,则可以形成2种不同的树结构: root - leftchild/rightchild; root - leftchild - rightchild有多少种不同的二叉树可以形成高度为h?
-1
A
回答
0
让我们有S [h]方法来构建高度为h的树((h) - 树)。
我们可以从根节点和从:
- 左(h-1)树和高度为0..h-2的任何右树组成树(h-tree)
-两个(h-1)树
- 右(H-1) - 树与高度0..h-2
所以递推公式任何左树
S[h] = S[h-1] * Sum{k=0..h-2} (S[k]) +
S[h-1] * S[h-1] +
S[h-1] * Sum{k=0..h-2} (S[k]) =
S[h-1] * (S[h-1] + 2 * Sum{k=0..h-2} (S[k]))
现在有了S[0] = 1, S[1] = 1
,我们可以找到递归所有值。
实施例:S[3] = S[2] * (S[2] + 2*(S[0] + S[1])) = 3 * (3 + 2 * (1 + 1)) = 21
注意,相同的值将被一次又一次地计算,所以它是值得使用动态规划:
- 或自顶向下memoization
- 当我们写一次计算值S [K ]到表中并使用它,这是递归非常简单的修改
- 或自下而上的方法 - 在这里我们可以使用累加和的附加表。
检查:S[5] = 457653
+0
嗨,MBo,非常感谢你的回答。 – batu
相关问题
- 1. 二叉树高度
- 2. 二叉树形成错误
- 3. 二叉树 - 哪一种二叉树
- 4. 在Python中构建高度为'h'的完整二叉树问题
- 5. 获取二叉搜索树的高度
- 6. 返回二叉查找树的高度
- 7. 查找二叉查找树的高度
- 8. 无法找出二叉树的高度
- 9. 完整二叉树的高度
- 10. 计算n个元素上所有可能根的高度为h的二叉搜索树的数量
- 11. 可能的具有以下节点的二叉搜索树和二叉树
- 12. 寻找最少在二叉树中的共同祖先o(h^2)换一个
- 13. 高度为h的红黑树中最小节点数的公式是多少?
- 14. 如何获得两种不同类型的两种不同的二叉树?
- 15. 递归使用树的高度的二叉树的直径?
- 16. 二叉树的长度
- 17. 计算所有结构不同的二叉树数量的时间复杂度是多少?
- 18. 将玫瑰树转换为不同的二叉树类型
- 19. 二叉树复杂度
- 20. 证明正元完成或接近完成,二叉树的高度log_2(N)
- 21. 这个二叉树可以平衡吗?
- 22. Python lxml - 创建树的不同叉形
- 23. 具有一个空子树的二叉树可以是平衡二叉树吗?如果是这样,何时?
- 24. 检查二叉树是否为二叉搜索树的函数?
- 25. 二叉树到二叉搜索树(BST)
- 26. 二叉搜索树 - 查找高度和深度
- 27. 生成所有可能的二叉树给定n叶
- 28. 将二叉树转换为双线程二叉树?
- 29. 获取无功能二叉树的高度参数
- 30. 使用Prolog查找二叉树的高度
我投票的,因为它不是一个编程问题,关闭这一问题作为题外话。这是一个离散的数学问题。 –