generateTreesFromRange(start, end)
that returns a list of all possible BSTs that can be formed using values from start
to end
.start > end
, return a list containing null
(base case).allTrees
to store the BSTs.i = start
to end
, treating i
as the root value.generateTreesFromRange(start, i - 1)
to generate all left subtrees.generateTreesFromRange(i + 1, end)
to generate all right subtrees.i
as the root and add it to allTrees
.allTrees
.generateTreesFromRange(1, n)
to generate all BSTs for the given n
.