2013年2月16日

NO.2 设计包含min 函数的栈

摘要: 题目: 定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。 要求函数min、push 以及pop 的时间复杂度都是O(1)。思路: 此题初看也是毫无思路的,栈这个结构我们很熟悉,min的时间复杂度为O(1)最先联想的是最小优先级队列,肯定是不可以的。思考发现,栈的特性可以找到的两个O(1)操作只有push和pop,MIN值的结构也是栈的FILO。FIFO与FILO真是世界上所有次序关系的高度概括。因此考虑辅助堆栈。代码://首先建立几个链栈,注意指针的指向与栈的生长方向class Stack{public: Stack(): base(NULL), top(NULL... 阅读全文

posted @ 2013-02-16 15:33 zjgtan 阅读(255) 评论(0) 推荐(0) 编辑

NO.1 把二元查找树转变成排序的双向链表

摘要: 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。举例:输入: 10 / / 6 14/ / / /4 8 12 16输出:4=6=8=10=12=14=16。思路:初遇此题,基本的思路是有的,肯定是调节节点左右孩子指针的指向来实现转换。然郁于认识所限,尝在举例中的输入树中寻求递归解,不得其法。借鉴他人思路,才知中序遍历二叉查找树即得到顺序输出,恍然大悟。 阅读全文

posted @ 2013-02-16 14:05 zjgtan 阅读(185) 评论(0) 推荐(0) 编辑

导航