博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 95. 不同的二叉搜索树 II
阅读量:4559 次
发布时间:2019-06-08

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

题意:给出n,求出1~n所构造的BST集合。   (由于返回值是vector<TreeNode*>,我刚开始还没看懂这是什么意思.....)

 

解题思路:

  • 对于一棵BST,很显然,其左右子树都是BST。
  • 因为要构造所有BST,因此每个结点都可能是根结点。
  • 那么建立一个函数BuildTree(int left,int right),   建立包括[left,right)的所有BST,在函数内,需要for来选取每个结点作为根结点。
  • 接下来就是容易出问题的地方。   刚开始我是这样定义:   TreeNode* BuildTree(int left,int right);      然后在内部,  root->left=BuildTree(left,i);   root->right=BuildTree(i+1,right);   结果在运行的时候发现怎么少了一些树。      问题根源:在这样的BuildTree中,对于每个root,只会返回一棵子树。(即使你循环了n次,只在最后一次进行返回,因此只返回一棵子树)。
  • 纠正:vector<TreeNode*> BuildTree(int left,int right),返回包含[left,right)的所有BST!!!     

 

另外,LeetCode还是能够cout进行调试,系统会在下面显示标准输出!!!(下次关于LeetCode的调试还是做一篇总结,不会调试还是挺麻烦的。)

 

1 /** 2  * Definition for a binary tree node. 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     vector
BuildTree(int left,int right){13 vector
v;14 // 必须加上,否则会v.size()=0;15 if(left>=right){16 v.push_back(NULL);17 }18 else{19 TreeNode* head;20 for(int i=left;i
v1=BuildTree(left,i);23 vector
v2=BuildTree(i+1,right);24 // 双重循环建立BST25 for(int j=0;j
left=v1[j];29 head->right=v2[k];30 v.push_back(head); 31 }32 }33 }34 }35 36 // cout<
<
generateTrees(int n) {41 TreeNode* head;42 vector
v;43 // 如果n==0,那么是没有元素的,根据我的写法,会产生[null]。 44 if(n==0){45 return v;46 }47 v=BuildTree(1,n+1);48 return v;49 }50 };

 

转载于:https://www.cnblogs.com/yy-1046741080/p/11594454.html

你可能感兴趣的文章
[书籍分享]0-006.App营销解密:移动互联网时代的营销革命
查看>>
JSON数组,JSON对象,数组的区别与基本操作整理
查看>>
【解决】3D加速(DirectX功能)被禁用(灰色)或者不可用
查看>>
hdoj 2191 悼念512 [多重背包]
查看>>
类内部实例化自身可行吗?
查看>>
utf8 和 UTF-8 的区别
查看>>
简单增加/删除表单元素
查看>>
angularJS通过post方法下载excel文件
查看>>
也谈阻塞、非阻塞、同步、异步
查看>>
SQL Server分布式事务问题
查看>>
第二个日记
查看>>
使用PLSQL导入导出数据库
查看>>
Codeforces Round #321 (Div. 2)
查看>>
Android SDK Manager 更新代理配置
查看>>
kafka版本0.8.2.0-Producer Configs之request.required.acks
查看>>
一个强悍的极简单递归小例子帮你从程序执行的角度理解递归
查看>>
2016012026+小学四则运算练习软件项目报告
查看>>
Android - 读取网站json并显示到Activity
查看>>
idea Live Template 快速使用
查看>>
git 初级
查看>>