Create Unique Binary Search Trees II

First, thinking about divide and conquer. From 1 to n, can all the root. When k is root, left tree should range from 0 to k - 1, right tree should range from k + 1 to n.
left tree and right tree should return in List<TreeNode>, left tree range from 0 to k - 1, right tree range from k + 1 to n. Go through the list and choose one root as left child and the from right tree as right child.