整理自己认为能理解的面试题目解法
2014-09-16 21:11
260 查看
1.把二元查找树转变成排序的双向链表
题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
10
/ \
6 14
/ \ / \
4 8 12 16
转换成双向链表
4=6=8=10=12=14=16。
这个是用中序遍历整个二叉树,再调整各个顶点的左右子树也就可以了,
关键是这个调整函数:
2.设计包含min 函数的栈。
定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。
要求函数min、push 以及pop 的时间复杂度都是O(1)。
这道题没什么注意的,因为min的时间复杂度为O(1),所以我们要加多一个min值标记最小数的位置。看另外的博客就行啦
题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
10
/ \
6 14
/ \ / \
4 8 12 16
转换成双向链表
4=6=8=10=12=14=16。
这个是用中序遍历整个二叉树,再调整各个顶点的左右子树也就可以了,
关键是这个调整函数:
void changethenode(S_BSTreeNode *CurNode) { if (curNode == NULL) return; CurNode->left = list; if (NULL != list) list->right = CurNode; list = CurNode; }
这个函数很巧妙地运用了,左右子树作为前后指针的存储点。
2.设计包含min 函数的栈。
定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。
要求函数min、push 以及pop 的时间复杂度都是O(1)。
这道题没什么注意的,因为min的时间复杂度为O(1),所以我们要加多一个min值标记最小数的位置。看另外的博客就行啦
相关文章推荐
- 期末Linux课程设计 题目+自己整理的流程
- 我整理的ABAP面试题目(有待进一步完善)
- 老毕整理的去年比较难的面试题目,供参考
- 精心整理的C语言面试题目
- 自己整理的部分腾讯web前端开发的笔试题目及答案
- JAVA经典题目,对理解概念很有意思(自己总结)
- IOS面试题目 整理
- 精选微软经典的算法面试100题(第1-20题) -代码详解(题目选自“结构之法”大侠的博客,答案都是本菜鸟自己做的)
- 网络--面试题目整理(一)
- 一些笔试面试时遇到的以及自己准备的题目
- 面试题目整理(对目前工作烦躁的人来看看,你真正明白多少)
- 腾讯QQ php程序员面试题目整理
- 一道面试题目,关于this的理解
- 收集整理的大公司面试中与编程相关题目
- 大家都说是水题。。好吧,那我就从水题开始做。。自己独立的做。正好最近在辅导大二的数据结构,自己也加强下对栈的理解和应用。 第一次那么完全的独立完成OJ的题,激动呐!读题目理解就废了我好多的时间,虽说英语过了
- 记录自己的java面试题目
- 面试中不会题目整理!
- 2011 IT公司笔试面试题目整理
- 最基础c++面试题目整理
- 面试关键题目整理