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

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

 

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

confused what "{1,#,2,3}" means? 

题解:这道题比1难的就是不是返回个数,而是返回全部结果。从http://blog.csdn.net/sinat_24520925/article/details/45562273可知可行的二叉查找树的数量时对应的卡特兰数。由于左右子数也是一棵树,仅仅是树节点的值不同,所以我们用递归的方法求全部树的结构。分成左子树以及右子树,将1~n先分成两部分,之后将这两部分递归所组成子树挂在根节点下就可以,代码例如以下:
 
/** * 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
subTree(int start,int end) { vector
res; if(start>end) { res.push_back(NULL); return res; } for(int k=start;k<=end;k++) { vector
left=subTree(start,k-1); vector
right=subTree(k+1,end); for(int i=0;i
left=left[i]; node->right=right[j]; res.push_back(node); } } } return res; } vector
generateTrees(int n) { vector
res; res=subTree(1,n); return res; }};
你可能感兴趣的文章
MongoDB的副本集Replica Set
查看>>
Maven项目中的配置文件找不到以及打包问题
查看>>
面向对象
查看>>
HDU 1058 Humble Numbers
查看>>
NYOJ The Triangle
查看>>
wps10.1中将txt转为excel
查看>>
并发同步知多少
查看>>
解决执行脚本报syntax error: unexpected end of file或syntax error near unexpected token `fi'错误的问题...
查看>>
[BZOJ3312][USACO]不找零(状压DP)
查看>>
gtp转换mbr
查看>>
django rest framework
查看>>
登录注册界面
查看>>
poj1985 求树的直径
查看>>
Python PyPI中国镜像
查看>>
centos 设置静态IP
查看>>
[Angularjs]系列——学习与实践
查看>>
js -- canvas img 封装
查看>>
转 我们工作的动力是什么 工作最终是为了什么?
查看>>
测试一个网站的最大并发量并发数并发用户
查看>>
适配器模式(数据库方面)支持不同的数据库连接
查看>>