码迷,mamicode.com
首页 > 编程语言 > 详细

Java for LeetCode 095 Unique Binary Search Trees II

时间:2015-05-21 19:11:26      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

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.

解题思路:

参考Java for LeetCode 096 Unique Binary Search Trees思路,本题很容易解决。注意,如果试图不复制而使用对象的引用,是无法得到正确结果的,当然也可采用DFS的思路,但是考虑到JAVA面向对象的特征,我们还是采用Java for LeetCode 096 Unique Binary Search Trees的思路吧。

JAVA实现如下:

static public List<TreeNode> generateTrees(int n) {
		List<TreeNode> list = new ArrayList<TreeNode>();
		if (n == 0) {
			list.add(null);
			return list;
		}
		if (n == 1) {
			list.add(new TreeNode(1));
			return list;
		}
		for (int k = 0; k <= n - 1; k++) {
			List<TreeNode> left = generateTrees(k);
			List<TreeNode> right = generateTrees(n - k - 1);
			for (TreeNode rightNode : right)
				plus(rightNode, k + 1);
			for (TreeNode leftNode : left) {
				for (TreeNode rightNode : right) {
					TreeNode TN = new TreeNode(k + 1);
					TN.left = treeNodeClone(leftNode);
					TN.right = treeNodeClone(rightNode);
					list.add(TN);
				}
			}
		}
		return list;
	}
	public static void plus(TreeNode root, int num) {
		if (root == null)
			return;
		root.val += num;
		plus(root.left, num);
		plus(root.right, num);
	}
	public static TreeNode treeNodeClone(TreeNode TN1){
		if(TN1==null)
			return null;
		TreeNode TN2=new TreeNode(TN1.val);
		TN2.left=treeNodeClone(TN1.left);
		TN2.right=treeNodeClone(TN1.right);
		return TN2;
	}

 

Java for LeetCode 095 Unique Binary Search Trees II

标签:

原文地址:http://www.cnblogs.com/tonyluis/p/4520296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!