【LeetCode】—— 不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

 

 1 class Solution {
 2     public int numTrees(int n) {
 3         int []G =new int[n+1];
 4         // 初始化为0,1时的情况
 5         G[0]=1;
 6         G[1]=1;
 7         for(int i=2;i<=n;i++){
 8             for(int j=1;j<=i;j++){
 9                 // 左边元素和右边元素能够构成的二叉树的总个数,累计求和
10                 G[i]+=G[j-1]*G[i-j];
11             }
12         }
13         return G[n];
14     }
15 }

 

解题关键:

1.以一个元素为根节点,则二叉搜索树左右两边的元素是固定的,接下来只要遍历子树即可

2.不同的二叉搜索树的个数只与节点的数量有关,与值无关。

 

posted @ 2021-11-08 08:00  吾辈当奋斗-生生不息  阅读(38)  评论(0)    收藏  举报