
常见算法
wgcse
这个作者很懒,什么都没留下…
展开
-
1.把二元查找树转变成排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。思路:创建一个节点指针last,指向空;中序遍历整个树,当访问到每个节点时,将当前节点放入last指向的链表的末尾,并调整链表及当前节点的左右指针。代码:struct TNode {int data;struct TNode *left;struct TNode *right;}TNode;void covert ( TNode *troot , TNode *last ){if(原创 2011-05-19 15:37:00 · 220 阅读 · 0 评论 -
2.求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n)。并记录最大子数组的位置。思路:当加上一个整数时,和会增大,当加上一个负数时,和会减小,当和为负数时舍弃前面的计算,从下个位置重新开始。代码:int findMax( int a[ ] , int size ,int &start, int &end ){int tempmax = max = 0;start = end = 0;//记录原创 2011-05-19 17:46:00 · 238 阅读 · 0 评论