博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode - Unique Binary Search Trees
阅读量:5220 次
发布时间:2019-06-14

本文共 967 字,大约阅读时间需要 3 分钟。

Given n, how many structurally unique BST's (binary search trees) that store values 1...n?

For example,

Given n = 3, there are a total of 5 unique BST's.

1         3     3      2      1    \       /     /      / \      \     3     2     1      1   3      2    /     /       \                 \   2     1         2                 3 思路:递归,由于是二叉查找树,先选择任一结点根结点,假设为结点i,则[1,i-1]范围的结点为结点i的左子树结点,[i+1,n]范围的结点为结点i的右子树结点,则以结点i为根结点的BST个数为左,右子树可构成BST个数的乘积,基于这个思路,可以写出以下递归程序。
1 class Solution 2 { 3 public: 4     int numTrees1(int start, int end) 5     { 6         if (start >= end) 7         { 8             return 1; 9         }10         11         int totalNum = 0;12         for (int i = start; i <= end; i++)13         {14             totalNum += numTrees1(start, i-1) * numTrees1(i+1, end);15         }16         return totalNum;17     }18 19     int numTrees(int n)20     {21         return numTrees1(1, n);22     }23 };

 

转载于:https://www.cnblogs.com/bournet/p/4105986.html

你可能感兴趣的文章
python3--算法基础:二分查找/折半查找
查看>>
Perl IO:随机读写文件
查看>>
Perl IO:IO重定向
查看>>
转:基于用户投票的排名算法系列
查看>>
WSDL 详解
查看>>
[转]ASP数组全集,多维数组和一维数组
查看>>
C# winform DataGridView 常见属性
查看>>
逻辑运算和while循环.
查看>>
Nhiberate (一)
查看>>
c#后台计算2个日期之间的天数差
查看>>
安卓开发中遇到的小问题
查看>>
ARTS打卡第3周
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
cookies相关概念
查看>>
CAN总线波形中ACK位电平为什么会偏高?
查看>>
MyBatis课程2
查看>>
桥接模式-Bridge(Java实现)
查看>>
svn客户端清空账号信息的两种方法
查看>>
springboot添加servlet的两种方法
查看>>
java的Array和List相互转换
查看>>