第55题 Unique Binary Search Trees II
来源:互联网 发布:暴漫淘宝 编辑:程序博客网 时间:2024/06/15 13:19
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? > read more on how binary tree is serialized on OJ.
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 \ 5The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}"
.Solution in Java:
/** * 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) { return generate(1, n); } public List<TreeNode> generate(int start, int end){ List<TreeNode> results = new ArrayList<TreeNode>(); if(start>end){ results.add(null); return results; } for(int indexRoot = start; indexRoot<=end; indexRoot++){ List<TreeNode> leftSubtrees = generate(start, indexRoot-1); List<TreeNode> rightSubtrees = generate(indexRoot+1, end); for(int leftRoot=0; leftRoot<leftSubtrees.size(); leftRoot++){ for(int rightRoot=0; rightRoot<rightSubtrees.size(); rightRoot++){ TreeNode curRoot = new TreeNode(indexRoot); curRoot.left = leftSubtrees.get(leftRoot); curRoot.right = rightSubtrees.get(rightRoot); results.add(curRoot); } } } return results; }}
Note: 从1到n生成BST,先选定1到n之间的一个数indexRoot作为根节点。则从1到indexRoot-1为左子树,从indexRoot+1到n为右子树。
递归求得左子树和右子树根结点的list后,遍历两个list,将其中的TreeNode作为该root的左孩子和又孩子。
0 0
- 第55题 Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees (& II)
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- android 选项卡TabHost
- Count Primes
- 压缩感知重构算法之压缩采样匹配追踪(CoSaMP)
- flash as3读取xml
- 打开网页时,发生了什么
- 第55题 Unique Binary Search Trees II
- mybatis知识总结(二)框架分析
- GBK与Unicode对照表的生成
- 欢迎使用CSDN-markdown编辑器
- mybatis知识总结(三)配置分析
- POJ 1664 放苹果
- Linux的多线程下载工具Axel
- opencv图像读取,视频读取
- python浮点数的is_integer