题目链接
法一
private List<TreeNode> dfs(int left, int right) {
List<TreeNode> forest = new LinkedList<>();
if (left > right) {
forest.add(null);
return forest;
}
for (int i = left; i <= right; i++) {
List<TreeNode> leftTreeList = dfs(left, i - 1);
List<TreeNode> rightTreeList = dfs(i + 1, right);
for (TreeNode leftTree : leftTreeList) {
for (TreeNode rightTree : rightTreeList) {
forest.add(new TreeNode(i, leftTree, rightTree));
}
}
}
return forest;
}
public List<TreeNode> generateTrees(int n) {
if (n > 0) {
return dfs(1, n);
} else {
return new LinkedList<>();
}
}
本地测试
lay.showTitle(95);
Solution95 sol95 = new Solution95();
List<TreeNode> forest95 = sol95.generateTrees(3);
for (TreeNode tree : forest95) {
treeOpt.layerOrder(tree);
}