zoukankan      html  css  js  c++  java
  • Java for LeetCode 095 Unique Binary Search Trees II

    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;
    	}
    
  • 相关阅读:
    Git 分支管理
    Git 保存工作区
    Git 版本控制
    Git 基本命令-详细版本
    Git 初始化配置
    Git 基本概念:分区
    JavaScript 调试
    JavaScript 错误
    JS 判断字符串是否全部为字母
    JS 判断输入字符串是否为数字、字母、下划线组成
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4520296.html
Copyright © 2011-2022 走看看