1. 对于一个含有n个数的有序数组1~N,能够产生多少种不同结果的二叉搜素树BST?
  2. 如何生成这些不同结构的BST?
  3. 有序数组如何生成平衡二叉搜索树?
 class Solution {
public:
int numTrees(int n) {
int* dp = new int[n+];
dp[] = ;
dp[] = ;
dp[] = ;
for(int i=;i<=n;i++){
dp[i] = ;
for(int j=;j<=i;j++){
dp[i]+=dp[j-]*dp[i-j];
}
}
return dp[n];
} int numTrees2(int n){
if(n==) return ;
if(n < ) return n;
int sum = ;
for(int i=;i<=n;i++){
sum += numTrees2(i-)*numTrees2(n-i);
}
return sum;
}
};
 /**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/ class Solution {
public:
vector<TreeNode *> generateTrees(int left, int right) {
vector<TreeNode*> res;
if (left > right) {
res.push_back(nullptr);
return res;
} if(left == right){
res.push_back(new TreeNode(left));
return res;
} for (int i = left; i <= right; i++) {
//TreeNode* root = new TreeNode(i);
vector<TreeNode*> leftRes = generateTrees(left, i-);
vector<TreeNode*> rightRes = generateTrees(i + , right);
for (size_t j = ; j < leftRes.size(); j++) {
for (size_t k = ; k < rightRes.size(); k++) {
TreeNode* root = new TreeNode(i);
root->left = leftRes[j];
root->right = rightRes[k];
res.push_back(root);
}
}
}
return res;
} vector<TreeNode*> generateTrees(int n){
vector<TreeNode*> res;
if(n == ) {
res.push_back(nullptr);
return res;
}
return generateTrees(,n);
} };

面试题22:有序数组生成不同结构BST的更多相关文章

  1. 【IT笔试面试题整理】有序数组生成最小高度二叉树

    [试题描述]定义一个函数,输入一个有序数组生成最小高度二叉树 We will try to create a binary tree such that for each node, the numb ...

  2. MySQL 索引结构 hash 有序数组

    MySQL 索引结构 hash 有序数组 除了最常见的树形索引结构,Hash索引也有它的独到之处.   Hash算法 Hash本身是一种函数,又被称为散列函数. 它的思路很简单:将key放在数组里,用 ...

  3. LeetCode:将有序数组转换为二叉搜索树【108】

    LeetCode:将有序数组转换为二叉搜索树[108] 题目描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差 ...

  4. 有序线性表(存储结构数组)--Java实现

    /*有序数组:主要是为了提高查找的效率 *查找:无序数组--顺序查找,有序数组--折半查找 *其中插入比无序数组慢 * */ public class MyOrderedArray { private ...

  5. 面试题:合并2个有序数组(leetcode88)

    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. ...

  6. 两个有序数组合并成一个有序数组(要求时间复杂度为O(n))

    面试题: 怎样把两个有序数组合并成有序数组呢 逻辑步骤: 1.假设两个数组为A和B 2.A和B都是从小到大的顺序进行排列 ** 1.我们可以直接比较两个数组的首元素,哪个小就把这个小元素放入可变数组. ...

  7. C语言实现顺序表的基本操作(从键盘输入 生成线性表,读txt文件生成线性表和数组生成线性表----三种写法)

    经过三天的时间终于把顺序表的操作实现搞定了.(主要是在测试部分停留了太长时间) 1. 线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素. 2. 采用的实现方式:一段地 ...

  8. PTA 有序数组的插入

    6-5 有序数组的插入 (20 分)   本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序. 函数接口定义: bool Insert( List L, ElementTy ...

  9. [LeetCode] Median of Two Sorted Arrays 两个有序数组的中位数

    There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...

随机推荐

  1. 论文笔记(2)-Dropout-Regularization of Neural Networks using DropConnect

    这篇paper使用DropConnect来规则化神经网络.dropconnect和dropout的区别如下图所示.dropout是随机吧隐含层的输出清空,而dropconnect是input unit ...

  2. DevExpress中Tile Application窗体的模型架构图

    DEV中Tile Application模型架构比较复杂,整理一下和大家分享. 图中:立体代表类:虚线椭圆代表属性.

  3. [Openwrt 项目开发笔记]:Openwrt必要设置(二)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 前面的两篇blog中,我将如何搭建Openwrt ...

  4. winform之combobox

    绑定键值对: ArrayList mylist = new ArrayList(); mylist.Add(new DictionaryEntry("WinFormURL", &q ...

  5. s11 day100路飞项目逻辑购物车一

    Luffy项目 先看练习,如下: 一. 添加购物车和查看 1. url url(r'^shoppingcar/$', shoppingcar.ShoppingCarView.as_view({&quo ...

  6. ip addr 相关操作

    1.添加ip: ip addr add 1.1.1.100/255.255.255.0 dev eth0 2.删除ip: ip addr del 1.1.1.100/255.255.255.0 dev ...

  7. Cordova - XCode10编译热更新插件错误解决方法!

    操作系统:OSX10.14 XCode:10.1 热更新插件:https://github.com/nordnet/cordova-hot-code-push 这个热更新插件,在安卓下编译,没有问题, ...

  8. win10中shift+右键,在此处打开cmd窗口

    通过添加注册表项,实现右击“在此处打开命令行功能” 注册表位置:HKEY_CLASSES_ROOT\Directory\Background\shell\ win10系统用标识右键菜单打开命令行的键, ...

  9. Java并发(一)-了解线程安全

    线程不安全性 先来举例说明线程不安全是什么情况下发生的:例如一个变量可以被多个线程进行访问,那么在大量线程并发访问这个变量的情况下,线程执行的顺序会给最后的结果带来不可预估的错误. 先定义一个单例类S ...

  10. iOS开发总结--三方平台开发之分享

    1.前言 在公司参与了多个应用三方平台的开发,涉及微信.微博.QQ.Facebook.meetup等,总结一下一般的接入三方平台SDK方法. 2.接入三方SDK 任何应用要接入三方平台,都需要在该平台 ...