(复习)[LeetCode]Unique Binary Search Trees II
来源:互联网 发布:蓝牙耳机推荐 知乎2016 编辑:程序博客网 时间:2024/06/08 17:54
Question
Given an integer 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
本题难度Medium。
【复杂度】
时间 O(N) 空间 O(N)
【思路】
根据数的范围start,end
,选取某个数i
作为分割点,然后分别得到左子树和右子树的范围 start,i-1
i+1, end
,然后分别求得两个子树的集合,然后进行组合从而得到树的集合trees
。
【要点】
先求出两边子树的集合,再组合得到树的集合。
【注意】
1. 第20行trees.add(null);
不能少,否则对于第28与29行来说,如果trees
里面什么都没有,是不能进行循环的!(null也是一个元素)
2. 如果输入n=0
,是要单独对待的(12-13行),系统要求此时结果里面什么都不能有,包括null!
【代码】
/** * 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<TreeNode> generateTrees(int n) { if(n==0) return new LinkedList<>(); return generate(1,n); } private List<TreeNode> generate(int start,int end){ List<TreeNode> trees=new LinkedList<>(); //base case if(start>end){ trees.add(null); return trees; } for(int i=start;i<=end;i++){ //get the Lists of left and right subTree respectively List<TreeNode> leftSubs=generate(start,i-1); List<TreeNode> rightSubs=generate(i+1,end); for(TreeNode l:leftSubs) for(TreeNode r:rightSubs){ TreeNode root=new TreeNode(i); root.left=l; root.right=r; trees.add(root); } } return trees; }}
0 0
- (复习)[LeetCode]Unique Binary Search Trees II
- LeetCode: Unique Binary Search Trees II
- LeetCode : Unique Binary Search Trees II
- [LeetCode] Unique Binary Search Trees II
- leetcode Unique Binary Search Trees II
- [LeetCode]Unique Binary Search Trees II
- [leetcode]Unique Binary Search Trees II
- LeetCode-Unique Binary Search Trees II
- [leetcode] Unique Binary Search Trees II
- LeetCode - Unique Binary Search Trees II
- LeetCode 95: Unique Binary Search Trees II
- Leetcode Unique Binary Search Trees II
- [LeetCode] Unique Binary Search Trees II
- Leetcode: Unique Binary Search Trees II
- leetcode Unique Binary Search Trees II
- 【Leetcode】Unique Binary Search Trees II
- LeetCode | Unique Binary Search Trees II
- Leetcode Unique Binary Search Trees II
- 轻轻敲开nodeJs的大门--第一个nodeJs入门小程序
- Maven常用命令
- loadRunner11.0安装与使用
- KEIL下mdk提示停止工作的问题
- 【OpenCV自学笔记】Day2 摄像头的打开和测试
- (复习)[LeetCode]Unique Binary Search Trees II
- 【NOIP冲刺】
- Xcode8屏蔽系统bug,真机调试NSLog没输出
- 排序算法之归并排序 java
- 概率
- Android性能优化之使用线程池处理异步任务
- 【NOIP模拟题】【数学归纳法】【递推】【容斥原理】【等比数列求和】2016.11.15 第三题 小L的珍珠挂饰 题解
- R语言案例分析:财政收入的多元相关与回归分析
- 16.Laravel报错SQLSTATE[42000] Syntax error or access violation 1055 'xxx' isn't in GROUP BY.txt