本文不打算介绍那些高逼格的算法,就讲讲最近在面试过程中遇到的算法题以及面试的时候给出的答案。算法可以说是解决所有问题的基石。很多东西都可以转换为算法问题,学习算法最大的作用就是更清楚地了解了很多东西。正所谓是,知其然更知其所以然。很多人都觉得程序就是数据结构+算法+适当的注释。不学算法,那就不要学编程了。虽然说可能没这么夸张,因为实际上还是有很多小项目是不需要太多算法的,都是代码一个劲的往上叠加就行了。但是就算没那么夸张,但是作为一个程序员,逻辑思维就是算法的思路还是很重要的。
由于篇幅有限,以下只展示小部分面试题,有需要完整版的朋友可以点一点链接跳转领取:链接:点这里!!!暗号:CSDN
第1题
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
10
/
6 14
/ \ /
4 8 12 16
转换成双向链表
4=6=8=10=12=14=16。
首先我们定义的二元查找树 节点的数据结构如下:
struct BSTreeNode
{
int m_nValue; // value of node
BSTreeNode *m_pLeft; // left child of node
BSTreeNode *m_pRight; // right child of node
};
第2题
设计包含min函数的栈。
定义栈的数据结构,要求添加一个min函数,能够得到栈的