【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.不同的二叉搜索树的个数只与节点的数量有关,与值无关。

浙公网安备 33010602011771号