给定一个值n,请生成所有的存储值1...n.的二叉搜索树(BST)的结构
例如:
给定n=3,你的程序应该给出下面五种不同的二叉搜索树(BST)
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; left = null; right = null; } * } */ import java.util.ArrayList; public class Solution { public ArrayList<TreeNode> help(int start, int end){ ArrayList<TreeNode> result = new ArrayList<TreeNode>(); if(start> end){ result.add(null);//关键的地方在这里,真的很关键,解决有有一遍子树为null的情况 return result; } for(int i=start; i<= end; i++){ ArrayList<TreeNode> resultLeft = help(start, i-1); ArrayList<TreeNode> resultRight = help(i+1, end);