二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 --即所有的根节点大于左子节点,小于右子节点

class Solution {
public List<TreeNode> generateTrees(int n) {
if (n == 0) {
return new LinkedList<TreeNode>();
}
return generateTrees(1, n);
} public List<TreeNode> generateTrees(int start, int end) {
List<TreeNode> allTrees = new LinkedList<TreeNode>();
if (start > end) {
allTrees.add(null);
return allTrees;
} // 枚举可行根节点
for (int i = start; i <= end; i++) {
// 获得所有可行的左子树集合
List<TreeNode> leftTrees = generateTrees(start, i - 1); // 获得所有可行的右子树集合
List<TreeNode> 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;
}
}

最新文章

  1. redis成长之路——(三)
  2. 使用纯前端JavaScript 实现Excel IO
  3. python 中字典实用操作
  4. POJ 3662 Telephone Lines(二分+最短路)
  5. node exports与 module.exports的区别
  6. javascript 中==和===的区别
  7. ASP.NET MVC 学习6、学习使用Code First Migrations功能,把Model的更新同步到DB中
  8. Linux 学习笔记 Linux环境变量初稿
  9. Windows使用Apache2配置Git服务器
  10. 内联函数 inline
  11. Linuxc - 标准输入流、标准输出流、标准错误流
  12. ldconfig几个需要注意的地方
  13. xilinx Vivado的使用详细介绍(2):创建工程、添加文件、综合、实现、管脚约束、产生比特流文件、烧写程序、硬件验证
  14. springboot nginx 配置
  15. Python3 tkinter基础 Frame bind 敲击键盘事件 将按键打印到console中
  16. sublime text3的注册码以及常用方法
  17. Spark与mysql整合
  18. Python - os 文件/目录操作
  19. 源代码方式调试Mycat
  20. NSDate 时区转换问题

热门文章

  1. S2-001漏洞分析
  2. LiteFlow 2.6.4版本发行注记,里程碑版本!
  3. adduser vs useradd
  4. 通过大量实战案例分解Netty中是如何解决拆包黏包问题的?
  5. Part 37 Difference between $scope and $rootScope
  6. 大爽Python入门教程 0-1 安装python
  7. win8中让cmd.exe始终以管理员身份运行
  8. 【TcaplusDB知识库】如何部署TcaplusDB Local 版
  9. Windows系统及硬件信息读取
  10. [省选联考 2021 A 卷] 矩阵游戏