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) 编辑
摘要: 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 阅读(159) 评论(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 阅读(114) 评论(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 阅读(294) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/walkinginthewind/article/details/7518888 阅读全文
posted @ 2012-12-07 14:14 kkmm 阅读(110) 评论(0) 推荐(0) 编辑