栈相关问题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值