- 博客(7)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 不用递归和辅助空间对二叉树进行遍历
递归和非递归的进行二叉树的遍历从某种意义上来讲都是需要辅助空间的。那么进行非递归的和不需要辅助空间的遍历会有这种可能吗?答案是肯定的,应用线索二叉树,这样就能把左子树或者右子树为空的节点利用起来,二叉树线索之后就可能找到某个节点的前区或者后继。一个含有n个节点的二叉树,可定会有n+1个指针是空的。所有利用这n+1一个指针就能将二叉树线索化而不遗漏任何一个节点。下面给出利用这种线索化来遍历二叉树
2013-06-18 14:08:58 3292
原创 判断图中是否包含欧拉路径或者欧拉环
欧拉路径的定义:对于无向图来说,欧拉路径就是通过每条边有且只有一次,如果遍历的起始点和终止点都是一个顶点的话,那么就说这个图存在欧拉环。上图中有三个例子,分别是欧拉路径和欧拉环,以及非欧拉路径。那么怎么来判断一个图中是否含有欧拉路径或者欧拉环呢。首先回想一下图的定义,图中有v个顶点,那么着v个顶点中有0个或者两个或者两个以上的顶点度数为奇数。接下来,求欧拉路径就相当于用笔画一个图,笔可
2013-06-16 16:00:07 9170
原创 判断一个给定的字符串通过循环移位是否可以包含另一个字符串
比如说给定字符串“ABCD"通过循环移位是否可以包含“CDAB”。有两种方法,一种方法就是通过创建另外一个字符串,这个字符串是两个“ABCD”的连接,然后应用kmp在新创建的字符串中查找"CDAB",这样的时间复杂度是O(n), 空间复杂度也是O(n),还有另外一种方法是可在O(n)时间内完成,下面给出代码:#include#include#includeusing namespac
2013-06-13 16:42:47 4549
原创 zig tag traversal a binary tree
#include#includeusing namespace std;typedef struct tree_node_s { int value; struct tree_node_s* lchild; struct tree_node_s* rchild;}tree_node_t;tree_node_t* createNode(int value) { tree_nod
2013-06-08 10:49:44 2413 1
原创 Length of the longest substring without repeating characters(dp)
给出一个字符串,找出这个字符串中最长连续的而且没有重复字符的子串,并返回它的长度。例如,对于字符串“BDEFGABEF”最长连续且没有重复字符的子串可以是“DEFGAB”或者“DEFGAB”,长度是6。对于字符串“BBBB”,它满足要求的字串的长度是1,即“B”。首先分析一下,对于给定长度的字符串,它一共有多少个字串呢? 子串数 = 长度为1的子串数+长度为2的子串数+ 。。。+长度为n的子串
2013-06-07 16:55:20 3239
原创 怎么判断一棵树的所有叶子节点都在同一层
给定一棵树,怎么判断它的所有叶子节点都在同一层,这种情况应该是完全二叉树的一种特例,如下图:如果去掉节点6的话,它是一棵完全二叉树,但是所有的叶子节点不在同一层,下面是层次遍历的一种方法:#include#includeusing namespace std;typedef struct tree_node_s { int value; struct t
2013-06-06 12:00:33 5903 1
原创 Connectivity in a directed graph
Given a directed graph, find out whether the graph is strongly connected or not. A directed graph is strongly connected if there is a path between any two pair of vertices. For example, following is
2013-06-04 11:19:01 3709
an efficient implemention of double array trie
2013-01-06
shared ptr可以从boost库中单独提出来吗
2015-06-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人