本文共 889 字,大约阅读时间需要 2 分钟。
class Solution { public ListgenerateTrees(int n) { if (n == 0) { return new LinkedList (); } return generateTrees(1, n); } public List generateTrees(int start, int end) { List allTrees = new LinkedList (); if (start > end) { allTrees.add(null); return allTrees; } // 枚举可行根节点 for (int i = start; i <= end; i++) { // 获得所有可行的左子树集合 List leftTrees = generateTrees(start, i - 1); // 获得所有可行的右子树集合 List rightTrees = generateTrees(i + 1, end); // 从左子树集合中选出一棵左子树,从右子树集合中选出一棵右子树,拼接到根节点上 for (TreeNode left : leftTrees) { for (TreeNode right : rightTrees) { TreeNode currTree = new TreeNode(i); currTree.left = left; currTree.right = right; allTrees.add(currTree); } } } return allTrees; }}
转载地址:http://fmhzi.baihongyu.com/