ID | Title | Difficulty | |
---|---|---|---|
Loading... |
95. Unique Binary Search Trees II
Medium
LeetCode
Dynamic Programming, Backtracking, Tree, Binary Search Tree, Binary Tree
Problem
Given an integer n, generate all structurally unique BST’s (binary search trees) that store values 1 … n.
Example:
Input: 3
Output:
[
[1,null,3,2],
[3,2,null,1],
[3,1,null,null,2],
[2,1,3],
[1,null,2,null,3]
]
Explanation:
The above output corresponds to the 5 unique BST's shown below:
1 3 3 2 1
\ / / / \ \
3 2 1 1 3 2
/ / \ \
2 1 2 3
Code
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<TreeNode> generateTrees(int n) {
if(n == 0) return new ArrayList<>();
return helper(1, n);
}
private List<TreeNode> helper(int start, int end){
List<TreeNode> list = new ArrayList<>();
if(start > end){
list.add(null);
return list;
}
for(int i = start; i <= end; i++){
List<TreeNode> leftNodes = helper(start, i - 1);
List<TreeNode> rightNodes = helper(i + 1, end);
for(TreeNode left : leftNodes){
for(TreeNode right : rightNodes){
TreeNode root = new TreeNode(i);
root.left = left;
root.right = right;
list.add(root);
}
}
}
return list;
}
}
按 <- 键看上一题!
94. Binary Tree Inorder Traversal
按 -> 键看下一题!
96. Unique Binary Search Trees