Unique Binary Search Tree II

来源:互联网 发布:你好旧时光 知乎 编辑:程序博客网 时间:2024/06/02 21:21


/** * 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 myGenerate(1, n);    }        private List<TreeNode> myGenerate(int left, int right) {        List<TreeNode> result = new ArrayList<TreeNode>();        // 剪枝        if (left > right) {            result.add(null);            return result;        }                for (int i = left; i <= right; i++) {            List<TreeNode> leftTree = myGenerate(left, i - 1);            List<TreeNode> rightTree = myGenerate(i + 1, right);                        for (TreeNode leftNode : leftTree)  {                for (TreeNode rightNode : rightTree) {                    TreeNode treeNode = new TreeNode(i);                    treeNode.left = leftNode;                    treeNode.right = rightNode;                    result.add(treeNode);                }            }        }        return result;    }}


0 0