使用 Catalan Number 概念的 N 个节点可能有多少二叉树

How many binary trees possible with N nodes using Catalan Number concept

所以我正在理解加泰罗尼亚数字概念并尝试使用 topDown DP 方法在代码中实现它,所以递归关系是我所学的,

f(N) signifies total count of binary search trees possible by N number of nodes

f(N) = f(i-1).f(N-i)

where, 
i = 1.....N (i signifies root node and traverse through all the nodes),
N is total number of nodes present in the binary tree,
f(i-1) signifies number of left subtrees possible when i is a root node,
f(N-i) signifies number of right subtrees possible when i is a root node.

有一个数学公式可以求出f(N)的值,

2NcN/(N+1)

。 并且,N 个节点可能的二叉树总数,

(factorial of N) * f(N)

我的疑问:

二叉树和二叉搜索树有什么区别?我觉得两者都定义了相同的含义,但有一个我不知道的区别所以帮助我。

What's the difference between binary trees and binary search trees?

这些树的 shape 没有区别,但是二叉搜索树对其节点具有的值施加了限制,这对于(仅)不存在二叉树:

  • 节点的值不得小于其左子树中的任何值
  • 节点的值不得大于其右子树中的任何值

表达这种约束的另一种方式是:

  • 树中值的中序遍历必须是非递减的。

实际上这意味着当你得到:

  • 具有节点
  • 的二叉树的形状
  • 树中存在的一组唯一值

...那么只有一种可能的方法可以将这些值与树的节点相关联,使其成为二叉搜索树。如果它不必是二叉 search 树,那么有!建立这种联系的方法。

结论:

给定 ,那么(第th个加泰罗尼亚数字)表示:

  • 节点没有值的二叉树的数量(即二叉树的形状的数量)
  • 具有不同值的二叉搜索树的数量

具有不同值的二叉树的数量是!