leetcode -- Unique Binary Search Trees II
2013-09-02 11:31
302 查看
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.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
The above binary tree is serialized as
[解题思路]
划分成左右子树分别进行构造,当左右子树所有可能情况都构造完毕后,加上node即可
这里根节点可能情况为1,2,....,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
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5
The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}".
[解题思路]
划分成左右子树分别进行构造,当左右子树所有可能情况都构造完毕后,加上node即可
这里根节点可能情况为1,2,....,n
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; left = null; right = null; } * } */ public class Solution { public ArrayList<TreeNode> generateTrees(int n) { // Start typing your Java solution below // DO NOT write main() function if(n == 0){ return generate(1, 0); } return generate(1, n); } public ArrayList<TreeNode> generate(int start, int end){ ArrayList<TreeNode> subTree = new ArrayList<TreeNode>(); if(start > end){ subTree.add(null); return subTree; } for(int i = start; i <= end; i++){ ArrayList<TreeNode> leftSubTree = generate(start, i - 1); ArrayList<TreeNode> rightSubTree = generate(i + 1, end); for(int j = 0; j < leftSubTree.size(); j++){ for(int k = 0; k < rightSubTree.size(); k++){ TreeNode node = new TreeNode(i); node.left = leftSubTree.get(j); node.right = rightSubTree.get(k); subTree.add(node); } } } return subTree; } }
相关文章推荐
- [Leetcode] 95. Unique Binary Search Trees II
- LeetCode 96 Unique Binary Search Trees II
- 095 Unique Binary Search Trees II [Leetcode]
- leetCode 95.Unique Binary Search Trees II (唯一二叉搜索树) 解题思路和方法
- 【Leetcode】【python】Unique Binary Search Trees II
- [leetcode] Unique Binary Search Trees II
- Unique Binary Search Trees II [Leetcode 解题报告]
- leetcode || 95、Unique Binary Search Trees II
- LeetCode: Unique Binary Search Trees II [096]
- [LeetCode] Unique Binary Search Trees II
- Unique Binary Search Trees II -- leetcode
- [LeetCode] Unique Binary Search Trees II, Solution
- [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 唯一二叉搜索树 II
- [LeetCode] 95. Unique Binary Search Trees II & I