有多少个二叉搜索树可以由 n 个不同的元素构建?我们如何找到一个经过数学证明的公式?
例子: 如果我们有 3 个不同的元素,比如 1、2、3,那么就有 5 个二叉搜索树。
有多少个二叉搜索树可以由 n 个不同的元素构建?我们如何找到一个经过数学证明的公式?
例子: 如果我们有 3 个不同的元素,比如 1、2、3,那么就有 5 个二叉搜索树。
给定n个元素,可以从这些元素中制作的二叉搜索树数量由第n个Catalan number(表示为Cn)给出。这等于
直观地说,卡特兰数代表你可以用 n 个元素创建以下方式的结构的方法数量:此模式完美匹配了从一组 n 个元素中构建 BST 的方式。选择一个元素作为树的根。所有较小的元素必须移到左侧,所有较大的元素必须移到右侧。从那里,您可以从左侧和右侧的元素中构建较小的 BST,然后将它们与根节点合并以形成整体 BST。使用 n 个元素可以完成这样做的方式数量由 Cn 给出,因此可能的 BST 数量由第 n 个卡特兰数给出。
希望这会有所帮助!
假设 T(n) 是 n 个元素的二叉搜索树数量。
给定 n 个不同的有序元素,编号为 1 到 n,我们选择 i 作为根节点。
这样就会有 (1..i-1) 在左子树中有 T(i-1) 种组合,在右子树中有 (i+1..n) 有 T(n-i) 种组合。
因此:
T(n) = sum_i=1^n(T(i-1) * T(n-i))
当然,T(1) = 1。