问:计算具有 n 个键的可能二叉搜索树总数的程序。

17 Mar 2025 | 5 分钟阅读

说明

在此程序中,我们需要找出可以用 n 个值构造的二叉搜索树的总数。下图显示了以 3 为键值的可能二叉搜索树。因此,我们可以构造总共五棵二叉搜索树。当我们选择节点 1 作为根节点时,我们得到两棵树。同样,以 2 为根节点的一棵树,以及当我们选择 3 作为根节点时的两棵树。

此方法涉及递归地选择一个节点作为根节点并创建可能的二叉搜索树。

计算可能二叉搜索树总数的简单方法是通过卡特兰数。

Program to find the total number of possible Binary Search Trees with n keys

算法

  1. 定义 Node 类,该类包含三个属性:data、left 和 right。这里,left 表示节点的左子节点,right 表示节点的右子节点。
  2. 当创建一个节点时,数据将传递到节点的 data 属性,并且 left 和 right 都将被设置为 null。
  3. 定义另一个类,该类有一个 root 属性。
    1. 表示树的根节点,并将其初始化为 null。
  4. numOfBST() 将找出给定键的总共可能的二叉搜索树。
    1. 它将通过调用 factorial() 来计算给定键的卡特兰数。
    2. 卡特兰数可以使用以下公式计算:
      Cn = (2n)! / n! *(n+1)!
    3. Factorial() 将计算给定数字的阶乘。

解决方案

Python

输出

Total number of possible Binary Search Trees with given key: 42

C

输出

Total number of possible Binary Search Trees with given key: 42

JAVA

输出

Total number of possible Binary Search Trees with given key: 42

C#

输出

Total number of possible Binary Search Trees with given key: 42

PHP

输出

Total number of possible Binary Search Trees with given key: 42
 
下一个主题程序列表