出题:要求实现层序遍历二元搜索树,并对比BFS与DFS的区别分析:层序遍历也就是由上至下,从左到右的遍历每一层的节点,类似于BFS的策略,使用Queue可以实现,BFS不能用递归实现(由于每一层都需要存储所有节点,所以非常耗用内存)。这段代码主要用于反映BFS与DFS的联系;解题:
1 class....
分类:
其他好文 时间:
2014-05-27 01:11:41
阅读次数:
398
这道题很难。
之前的题目我提到过一次用两个vector来做层序遍历的,就是因为这道题。要想最后恢复出单词变换的路径,就需要事先保存,根据dp中路径恢复的启发,保存的应该是一个单词的前一个变换节点。可能有很多个单词都能变换到当前单词,因此应该是一个set。用一个二维的vector保存当前可以变换到的单词和变换出这些单词单词。每一维的vector存放的都是一个set。设存放当前可访问单词的vecto...
分类:
其他好文 时间:
2014-05-15 19:37:03
阅读次数:
437
原题地址:http://oj.leetcode.com/problems/binary-tree-level-order-traversal/题意:二叉树的层序遍历的实现。解题思路:二叉树的层序遍历可以用bfs或者dfs来实现。这里使用的dfs实现,代码比较简洁。实际上,二叉树的先序遍历就是dfs实...
分类:
编程语言 时间:
2014-05-14 03:25:59
阅读次数:
428
很简单的题目,在想是不是后面就不要更这么简答的了,大家都会写,没人看啊。层序遍历的基础上,加了保存每一层,加了从下往上输出,就是一个vector和一个stack的问题嘛,无他,但手熟尔。
class Solution {
public:
vector > levelOrderBottom(TreeNode *root) {
vector > res;
if...
分类:
其他好文 时间:
2014-05-08 11:17:46
阅读次数:
268
很简单的题目,不过还是觉得要说一下。最小深度,很快想到bfs,层序遍历嘛。本科的时候实在是没写过多少代码,一开始居然想不到怎么保存一层的信息。后来想到可以压入一个特殊的对象,每次到达这个对象就知道是一层了。我用的是空指针,觉得这个适用性还是不错的。一层的节点入队结束后,应该压入一个NULL,当一层的节点都处理完,遇到NULL的时候,要在队列尾部再入队一个NULL,这是后一层的分界线嘛。
昨天在另...
分类:
其他好文 时间:
2014-05-08 11:09:28
阅读次数:
315