二叉树系列---求包含n个节点的二叉查找树的种类数

本文探讨了包含n个节点的二叉查找树的种类数问题,提供了两种解决方案:方法1通过动态规划计算,dp[i]表示i个节点时的BST树个数;方法2利用递归思想,选择节点并组合左右子树。同时,文章还介绍了如何构造包含n个节点的所有二叉查找树,通过以不同节点为根并递归组合左右子树来实现。
摘要由CSDN通过智能技术生成

题目1

求包含n个节点的二叉查找树的种类数;

方法1

设dp[i]表示共有i个节点时,能产生的BST树的个数
n == 0 时,空树的个数必然为1,因此dp[0] = 1
n == 1 时,只有1这个根节点,数量也为1,因此dp[1] = 1
当根节点元素为 1, 2, 3, 4, 5, …, i, …, n时,基于以下原则的BST树具有唯一性:
以i为根节点时,其左子树构成为[0,…,i-1],其右子树构成为[i+1,…,n]构成
因此,dp[i] = sigma(dp[0…k] * dp[k+1…i]) 0 <= k < i - 1

public int numTrees(int n) {
        if(n==0||n==1){
            return 1;
        }
        int[] nums=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值