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

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

Description:

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. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {        public List
generate(int start, int end) { List
ret = new ArrayList
(); if(start > end) { ret.add(null); return ret; } for(int i=start; i<=end; i++) { List
lTree = generate(start, i-1); //生成左子树集合 List
rTree = generate(i+1, end); //生成右子树集合 for(int j=0; j
generateTrees(int n) { if(n <= 0) return new ArrayList
(); return generate(0, n-1); }}

C++:

/** * 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
generate(int start, int end) { vector
ret; if (start > end) { ret.push_back(NULL); return ret; } for(int i = start; i <= end; i++) { vector
lTree = generate(start, i - 1); vector
rTree = generate(i + 1, end); for(int j = 0; j < lTree.size(); j++) for(int k = 0; k < rTree.size(); k++) { TreeNode *node = new TreeNode(i + 1); ret.push_back(node); node->left = lTree[j]; node->right = rTree[k]; } } return ret; } vector
generateTrees(int n) {
vector
ret; if(n <= 0) return ret; return generate(0, n - 1); }};

同样的代码同样的测试数据Java代码为什么效率高这么多,难道是跑代码的服务器不一样?还是Java后台调用代码写的好?

 

转载地址:http://ijbfa.baihongyu.com/

你可能感兴趣的文章
内核模式下的文件操作
查看>>
poj 1947(树形dp)
查看>>
c++构造函数详解(转)
查看>>
利用MyEclipse从数据库反向生成实体类之JPA方式(转)
查看>>
JS-获取class类名为某个的元素-【getClass】函数封装
查看>>
在iis中配置自己的cgi
查看>>
Java主要的技术点有哪些呢?
查看>>
myBatis01
查看>>
[条款36]绝不重新定义继承而来的non-virtual函数
查看>>
ios 判断当前时间是否在某个时间段的方法
查看>>
Oracle RAC环境的日志体系
查看>>
angularjs 控制器
查看>>
bat相关命令
查看>>
restful
查看>>
单线程爬虫实现
查看>>
锁与线程
查看>>
bzoj 3223: Tyvj 1729 文艺平衡树
查看>>
MySQL高级 之 order by、group by 优化
查看>>
JavaScript学习笔记(三)
查看>>
PyQt4学习笔记2:事件和信号
查看>>