上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 31 下一页
  2012年12月8日
摘要: 算法思想借鉴自:http://blog.csdn.net/clamreason/article/details/7904062由2个元素开始作为初始条件,一个一个元素的添加进现有数组,保存2个变量,1个是currMin,就是当前处理的子数组的最小元素,一个是maxDiff,就是当前处理的子数组中最大的数对之差。如果当前添加的元素比min小,更新min,如果当前添加的元素减去min比maxDiff大,那么更新maxDiff。/* LeetCode: A Distance Maximizing Problemreturn value: max differenceparameters: arr - 阅读全文
posted @ 2012-12-08 22:52 kkmm 阅读(562) 评论(0) 推荐(0) 编辑
摘要: struct Node{ int value; Node *pLeft; Node *pRight; Node *pParent;};//BTree(not a BST)//both has parent pointerNode *LCA(Node *p, Node *q) //这里的p q为NULL的检测融入到了代码当中{ int pDepth = 0; int qDepth = 0; Node *walker = p; while (!walker) { walker = walker... 阅读全文
posted @ 2012-12-08 19:10 kkmm 阅读(190) 评论(0) 推荐(0) 编辑
摘要: //down-up approach for normal BTree(not a BST)//there's no parent pointerNode *LCA(Node *pRoot, Node *p, Node *q){ if (!pRoot) return NULL; if (pRoot == p || pRoot == q) return pRoot; Node *L = LCA(pRoot->pLeft, p, q); Node *R = LCA(pRoot->pRight, p, q); if (L && R) ... 阅读全文
posted @ 2012-12-08 17:51 kkmm 阅读(165) 评论(0) 推荐(0) 编辑
  2012年12月7日
摘要: 在p后面插入新节点,将p的值与新建的节点值互换。 阅读全文
posted @ 2012-12-07 16:30 kkmm 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/dengsi23/article/details/7984291判断单向链表是否有环,可以采用快指针与慢指针的方式来解决。即定义一个快指针fast和一个慢指针slow,使得fast每次跳跃两个节点,slow每次跳跃一个节点。如果链表没有环的话,则slow与fast永远不会相遇(这里链表至少有两个节点);如果有环,则fast与slow将会在环中相遇。判断出链表有环以后,则需要算出进入环的第一个节点。在fast与slow第一次相遇后,设置一个节点pNode从链表的头部开始遍历,每次只遍历一个节点。这样,当fast与slow再次相遇时,pNode所处的 阅读全文
posted @ 2012-12-07 16:28 kkmm 阅读(1761) 评论(0) 推荐(0) 编辑
摘要: int LeavesNodeNum(Node *pRoot){ if (!pRoot) return 0; if (!pRoot->pLeft && !pRoot->pRight) return 1; return LeavesNodeNum(pRoot->pLeft) + LeavesNodeNum(pRoot->pRight);}EOF 阅读全文
posted @ 2012-12-07 16:10 kkmm 阅读(211) 评论(0) 推荐(0) 编辑
摘要: int GetNodeNumKthLevel(Node *pRoot, int k){ if (!pRoot || k < 1) return 0; if (k = 1) return 1; return GetNodeNumKthLevel(pRoot->pLeft, k-1) + GetNodeNumKthLevel(pRoot->pRight, k-1);}EOF 阅读全文
posted @ 2012-12-07 16:04 kkmm 阅读(3142) 评论(0) 推荐(0) 编辑
摘要: void BTreeToDoubleLinkList(Node *pRoot, Node *&pFirst, Node *&pLast){ if (!pRoot) { pFirst = NULL; pLast = NULL; return; } Node *pFirstLeft = NULL; Node *pLastLeft = NULL; Node *pFirstRight = NULL; Node *pLastRight = NULL; if (!pRoot->pLeft) pFirst... 阅读全文
posted @ 2012-12-07 15:35 kkmm 阅读(251) 评论(0) 推荐(0) 编辑
摘要: void visit(Node *pRoot){ cout<<pRoot->value<<endl;}void LevelTraverse(Node *pRoot){ if (!pRoot) return; queue<Node *> q; q.push(pRoot); while (!q.empty()) { Node *pNode = q.front(); q.pop(); visit(pNode); if (pNode->pLeft) q.push(pNode-... 阅读全文
posted @ 2012-12-07 14:38 kkmm 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 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:30 kkmm 阅读(143) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 31 下一页