博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LC-96 不同的二叉搜索树
阅读量:4972 次
发布时间:2019-06-12

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

目标:

给出节点数,输出可以生成多少颗二叉搜索树的数量。

 

主要思路:

主要考察对搜索二叉树的理解,考虑分状况,当选择最小的节点或最大节点当树节点,则剩下的情况就等于F(n - 1)。当选择中间节点,则为F(1) * F(n - 2) + F(2) * F(n - 3) + ... + F(n-3) * F(2) + F(1) * F(n - 2)这么多种情况。

所以总的F(n) = F(n - 1) + F(1) * F(n - 2) + F(2) * F(n - 3) + ... + F(n-3) * F(2) + F(1) * F(n - 2) + F(n - 1)

参考:

 

代码:

1 class Solution { 2 public: 3     int numTrees(int n) { 4         if (n == 1) return 1; 5         int sum = 0; 6         sum += 2 * numTrees(n - 1); 7         for (int i = 1; i < n - 1; i++) { 8             sum += numTrees(i) * numTrees(n - 1 - i); 9         }10         return sum;11     }12 };

 

转载于:https://www.cnblogs.com/leo-lzj/p/9909813.html

你可能感兴趣的文章
iOS programming UITabBarController
查看>>
如何弹出一个模式窗口来显示进度条
查看>>
C#与matlab混合编程(1)多元线性回归
查看>>
护网杯划水
查看>>
(转)Android 仿订单出票效果 (附DEMO)
查看>>
高薪是怎么跳出来的
查看>>
jvm栈-运行控制,jvm-堆运行存储共享单元
查看>>
数据库多张表导出到excel
查看>>
jekyll bootstrap更改主题theme
查看>>
POJ1300(欧拉回路)
查看>>
快速智能数据导入工具1.0
查看>>
态度决定品质
查看>>
NPOI Excel 单元格背景颜色对照表
查看>>
微信小程序去除button默认样式
查看>>
11/26
查看>>
Where does Visual Studio look for C++ Header files?
查看>>
Java打包可执行jar包 包含外部文件
查看>>
伪装虽易测试不易之微信浏览器
查看>>
Xcode 5.1.1 与 Xcode 6.0.1 共存
查看>>
窥探 kernel --- 进程调度的目标,nice值,静态优先级,动态优先级,实时优先级...
查看>>