上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 31 下一页
  2012年12月7日
摘要: void visit(Node *pRoot){ cout<<pRoot->value<<endl;}void InOrderTraverse(Node *pRoot){ if (!pRoot) return; InOrderTraverse(pRoot->pLeft); visit(pRoot); InOrderTraverse(pRoot->pRight);}EOF 阅读全文
posted @ 2012-12-07 14:28 kkmm 阅读(160) 评论(0) 推荐(0) 编辑
摘要: void visit(Node *pRoot){ cout<<pRoot->value<<endl;}void PreOrderTraverse(Node *pRoot){ if (!pRoot) return; visit(pRoot); PreOrderTraverse(pRoot->pLeft); PreOrderTraverse(pRoot->pRight);}EOF 阅读全文
posted @ 2012-12-07 14:27 kkmm 阅读(144) 评论(0) 推荐(0) 编辑
摘要: int Depth(Node *pRoot){ if (!pRoot) return 0; int leftDepth = Depth(pRoot->pLeft); int rightDepth = Depth(pRoot->pRight); return (leftDepth > rightDepth) ? (leftDepth + 1) : (rightDepth + 1);}EOF 阅读全文
posted @ 2012-12-07 14:23 kkmm 阅读(115) 评论(0) 推荐(0) 编辑
摘要: int GetNodeNum(Node *pRoot){ if (!pRoot) return 0; return GetNodeNum(pRoot->pLeft) + GetNodeNum(pRoot->pRight) + 1;}EOF 阅读全文
posted @ 2012-12-07 14:20 kkmm 阅读(296) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/walkinginthewind/article/details/7518888 阅读全文
posted @ 2012-12-07 14:14 kkmm 阅读(112) 评论(0) 推荐(0) 编辑
  2012年12月6日
摘要: 转自:http://blog.csdn.net/midgard/article/details/4101025#comments拓扑排序是对有向无环图的一种排序。表示了顶点按边的方向出现的先后顺序。如果有环,则无法表示两个顶点的先后顺序。在现实生活中,也会有不少应用例子,比如学校课程布置图,要先修完一些基础课,才可以继续修专业课。一个简单的求拓扑排序的算法:首先要找到任意入度为0的一个顶点,删除它及所有相邻的边,再找入度为0的顶点,以此类推,直到删除所有顶点。顶点的删除顺序即为拓扑排序。很容易得到拓扑排序的伪代码:void TopSort(Graph g){for (int i=0; i< 阅读全文
posted @ 2012-12-06 13:41 kkmm 阅读(211) 评论(0) 推荐(0) 编辑
  2012年12月5日
摘要: C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结<引用>一,C语言的字符串在C语言里,对字符串的处理一项都是一件比较痛苦的事情,因为通常在实现字符串的操作的时候都会用到最不容易驾驭的类型——指针。比如下面这个例子://example 1:char str[12] = "Hello";char *p = str;*p = 'h'; //改变第一个字母//example 2:char *ptr = 阅读全文
posted @ 2012-12-05 10:08 kkmm 阅读(236) 评论(0) 推荐(0) 编辑
  2012年12月3日
摘要: 题目:http://www.leetcode.com/2010/04/finding-all-unique-triplets-that-sums.html分析:首先brute force,O(n3)。i j k从0到n-1各循环一遍,肯定不能要。其次,我们先假设只有2个数,对于一个排序的数组来说,如果想要a + b = 0,那么可以两个指针,一个在head(),一个在tail(),然后判断这两个it的值相加是否等于0,如果小于,那么前面的指针++,如果大于,那么后面的指针--,直到指针相遇或者找到和为0的一对。这使得2个数字的算法复杂度由O(n2) -> O(n)。然后,对于3个数字的相 阅读全文
posted @ 2012-12-03 18:17 kkmm 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 题目:http://www.leetcode.com/2011/07/lowest-common-ancestor-of-a-binary-tree-part-i.html#include <iostream>using namespace std;struct Node{ int value; Node *pLeft; Node *pRight;};Node *CreateNode(int v){ Node *pNode = new Node(); if (!pNode) return NULL; pNode->value = v; p... 阅读全文
posted @ 2012-12-03 16:25 kkmm 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 题目在:http://www.leetcode.com/2011/07/lowest-common-ancestor-of-a-binary-tree-part-i.html自己将上述网址中的 Top-Down Approach 重写了一遍,为了练手。这个方法是基础的方法,复杂度为O(n2),简而言之就是先判断p q是在不同的子树还是相同的子树里,如果不同,那么root就是LCA,如果相同,那么递归。代码如下:#include <iostream>using namespace std;struct Node{ int value; Node *pLeft; Node *pR... 阅读全文
posted @ 2012-12-03 15:58 kkmm 阅读(186) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 31 下一页