博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法-树-不同的二叉搜索树
阅读量:3968 次
发布时间:2019-05-24

本文共 889 字,大约阅读时间需要 2 分钟。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Solution {
public List
generateTrees(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/

你可能感兴趣的文章
两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];
查看>>
用户态切换到内核态的3种方式
查看>>
笔试常见的智力题(附答案)
查看>>
内核库函数
查看>>
Linux 系统内核空间与用户空间通信的实现与分析
查看>>
如何写好应用型学术论文
查看>>
如何查看进程的各种限制
查看>>
64位int类型用printf输出问题
查看>>
网络后台开发面试题目
查看>>
Linux 共享内存限制的查看与设置
查看>>
进程的状态转换
查看>>
如何查看进程的信息(线程数)
查看>>
Linux中的chage命令
查看>>
linux-详细解析密码文件passwd与shadow
查看>>
su- 与su的区别
查看>>
linux下发邮件mail
查看>>
echo如何手动输出换行
查看>>
身份证的正确使用方法——非常重要的知识
查看>>
ExtJS & Ajax
查看>>
Tomcat在Windows下的免安装配置
查看>>