数据结构与算法
文章平均质量分 93
walkerkalr
学无止境,梦想不止
展开
-
二叉树的遍历与创建
二叉树遍历:递归实现:void BT_Order(BTreeNode *t){ if(NULL == t)return ; //先序处理插入coutdata BT_Order(t->lchild); //中序处理插入coutdata BT_Order(t->rchild); //后序处理插入coutda原创 2013-04-18 19:34:54 · 527 阅读 · 0 评论 -
二叉树非递归和递归遍历(先序,中序,后序)
首先创建二叉树,然后对二叉树遍历进行了单元测试。只要将相应的注释取消,便可以成功运行。/********************************************二叉树遍历前序、中序、后序的递归和非递归实现********************************************/#include#includeusing namespace std;原创 2014-03-02 13:43:01 · 1064 阅读 · 0 评论 -
前缀、中缀、后缀表达式转换详解
前缀、中缀、后缀表达式转换详解昨天参加了ebay实习生笔试题,其中一道题目给定了前缀表达式,让我们求转换成中缀表达式时辅助栈的做多情况下容乃几个元素以及中缀表达式的值。当时没有做出来,会后后网上查了些资料,发现很少有文章将前缀、中缀和后缀表达式之间的转化覆盖了,所以写下这篇文章希望能够将前缀、中缀和后缀表达式之间的转化讲解清楚。一般而言,我们最常遇到的是将中缀表达式转化为后缀表达式,既然这原创 2014-04-02 15:06:43 · 29262 阅读 · 10 评论 -
二叉树层序遍历
二叉树的创建,销毁与先序,中序,后序遍历参见http://blog.csdn.net/walkerkalr/article/details/20287119以下是利用队列来层序遍历的算法:void levelOrder(BinaryTreeNode* pRoot){ if(pRoot != NULL) { queue btnQueue; btnQueue.push(p原创 2014-03-02 14:06:57 · 950 阅读 · 0 评论 -
8.通过调整链来交换两个相邻的元素
/*通过调整链来交换两个相邻的元素*//*单链表*/#includeusing namespace std;struct ListNode{ int value; ListNode * pNext;};void addListNode(ListNode * & p, int v){ if(NULL == p){ ListNode * pTem = new ListNod原创 2013-11-29 16:14:14 · 2911 阅读 · 1 评论 -
7、一个链表中的元素由另一个链表实现
/*7.给定一个链表L和另一个链表P,他们包含以升序排列的整数。操作printLots(L,P)将打印出L中那些由P所指出的位置上的元素。例如:如果P=1,3,4,6,那么L中的第1,3,4和6个元素被打印出来。写出过程printLots(L,P)。该过程的运行时间是多少?*/#include#includeusing namespace std;void printLo原创 2013-11-29 14:50:32 · 2019 阅读 · 0 评论 -
4.在二元树中找出和为某一值的所有路径(树)
/***4.在二元树中找出和为某一值的所有路径(树)题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数22和如下二元树 10 / \ 5 12 / \ 4 7则打印出两条路径:10, 12和10, 5, 7。**/原创 2013-11-19 22:04:11 · 710 阅读 · 0 评论 -
6.判断整数序列是不是二元查找树的后序遍历结果
(06)判断整数序列是不是二元查找树的后序遍历结果 [折叠]题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \转载 2013-11-23 21:43:05 · 829 阅读 · 0 评论 -
5.查找最小的k个元素
(05)查找最小的k个元素 [折叠]题目:输入n个整数,输出其中最小的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。#include #include #include using namespace std;typedef multiset > IntHeap;///////////////////////////转载 2013-11-20 20:20:02 · 945 阅读 · 0 评论 -
1.把二元查找树转变成排序的双向链表
题目:1.把二元查找树转变成排序的双向链表输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。( 二元查找树:它首先要是一棵二元树,在这基础上它或者是一棵空树;或者是具有下列性质的二元树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分转载 2013-11-16 20:33:20 · 722 阅读 · 0 评论 -
2.设计包含min函数的栈。
2.设计包含min函数的栈。定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。#include#include #include using namespace std;template class StackSuppliedMin{private: vector dates; vector m转载 2013-11-18 14:24:14 · 560 阅读 · 0 评论 -
3.求子数组的最大和
3.求子数组的最大和题目:输入一个整形数组,数组里有正数也有负数,也可以全部是正数或者全不是负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10,-4, 7, 2,因此输出为该子数组的和18。#include转载 2013-11-18 14:52:17 · 546 阅读 · 0 评论 -
排列组合总结
组合1.位运算实现求组合:在此介绍二进制转化法,即,将每个组合与一个二进制数对应起来,枚举二进制的同时,枚举每个组合。如字符串:abcde,则有00000---------null00001---------a00010 --------b00011---------ab00100---------c… …11111--------abcde给出程序原创 2014-09-04 11:01:14 · 1311 阅读 · 0 评论