1、两个队列实现栈
2、两个栈实现队列
3、栈的有效性
用一个栈结构来模拟。实质上是用栈保存了进栈的顺序。每遍历到一个数字位置,便进栈,top指针只增不减。当当前遍历元素值大于top指针时,就将top指针以下所有节点入栈。当栈为空,或者栈顶元素不等于pop到的元素时,return false;
4、求所有栈的组合
有两个思路,一个是求出所有可能的二叉搜索树序列,然后将非null元素组合输出。
另一个思路是,求出所有组合,经过判断后,加入有效的组合。
第三个不成熟的思路是,按第一个出栈元素进行分类讨论。
第四个不成熟的思路是,123456入栈,每入栈一个元素即经过判断,栈是否为空,出栈。。。这种思路好像划归到回溯法的思路上了。
建议按第2个思路吧。目前就想这么多。
5、求所有可能二叉搜索树序列。
有一个generate函数,参数是begin, end
即对begin到end 的序列生成二叉搜索树
有一个大的for循环用来遍历begin到end的所有元素作为根节点。
那么每个根节点都对应一个leftList,一个rightList
对于leftList,rightList的每个节点进行乘法组合,并输出。
递归的重点是begin>=end
begin>end时,输出仅有null的树的list
当begin==end时,输出仅有一个值为begin的节点的list
栈相关问题
最新推荐文章于 2022-04-28 23:09:58 发布