/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func generateTrees(n int) []*TreeNode { if n <= 0 { return nil } return create(1, n)}func create(start, end int) []*TreeNode { if start > end { return []*TreeNode{nil} } all_Trees := []*TreeNode{} for i := start; i <= end; i++ { left_Trees := create(start, i - 1) right_Trees := create(i + 1, end) for _, left := range(left_Trees) { for _, right := range(right_Trees) { curTree := &TreeNode{i, nil, nil} curTree.Left = left curTree.Right = right all_Trees = append(all_Trees, curTree) } } } return all_Trees}