博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
96. Unique Binary Search Trees(I 和 II)
阅读量:6279 次
发布时间:2019-06-22

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

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

如果F(n)表示长度为n的二叉树有多少种结果,则

F(n) = F(0)*F(n-1) + F(1)*F(n-2) + F(2)*F(n-2) + ......+ F(n-1)*F(0)

所以代码如下:

class Solution {public:    int numTrees(int n) {        if(n <= 0) return 0;        vector
nums(n+1,0); nums[0] = 1; for(int i = 1; i<=n; i++){ for(int j = 1; j <=i ; j++){ nums[i] += nums[j-1]*nums[i-j]; } } return nums[n]; }};

Unique Binary Search Trees II

Given n, generate all structurally unique BST’s (binary search trees) that store values 1…n.

For example,

Given n = 3, your program should return all 5 unique BST’s shown below.

1         3     3      2      1    \       /     /      / \      \     3     2     1      1   3      2    /     /       \                 \   2     1         2                 3

同样沿用 I 的思路,利用分治思想

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector
generateTrees(int n) { if(n <=0) return vector
(); return generateSubTrees(1,n); } vector
generateSubTrees(int s,int e){ vector
res; if(s > e){ res.push_back(NULL); return res; } for(int i = s; i <= e;i++ ){ vector
left = generateSubTrees(s,i-1); vector
right = generateSubTrees(i+1,e); for(auto l : left){ for(auto r : right){ TreeNode* root = new TreeNode(i); root->left = l; root->right = r; res.push_back(root); } } } return res; }};

转载于:https://www.cnblogs.com/CarryPotMan/p/5343676.html

你可能感兴趣的文章
机器学习算法:朴素贝叶斯
查看>>
小五思科技术学习笔记之扩展访问列表
查看>>
使用Python脚本检验文件系统数据完整性
查看>>
使用MDT部署Windows Server 2003 R2
查看>>
Redhat as5安装Mysql5.0.28
查看>>
通过TMG发布ActiveSync
查看>>
Web服务器的配置与管理(4) 配置访问权限和安全
查看>>
Linux系统安装VMware Tools
查看>>
asp.net 页面右下角弹出类似QQ或MSN的消息提示
查看>>
游戏开发经常使用算法概述
查看>>
EDM制作要点
查看>>
爆牙齿的Web标准面试考题II(iPhone SMS/iChat UI的Web标准实现)
查看>>
XMOVE3.0手持终端——软件介绍(二):在2KB内存的单片机上实现的彩屏GUI控件库
查看>>
MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
查看>>
找小于N 的所有质数
查看>>
Windows下的Jupyter Notebook 的介绍(写给新手)(图文详解)
查看>>
iOS开发-CocoaPods实战
查看>>
JS组件系列——Bootstrap 树控件使用经验分享
查看>>
HTML-color:rgb()-颜色渐进
查看>>
数据库实例: STOREBOOK > 表空间 > 编辑 表空间: UNDOTBS1
查看>>