cplusplus trace
冬夜多漫长
思君令人老,岁月忽已晚。
展开
-
利用前序、中序、后序构造二叉树
本文介绍的是利用二叉树的遍历构造二叉树,需要注意的是,可以由前序与中序,也可以由中序与后序进行构造,但是由前序和后序则不可以。 因为构造的关键点在于在前序或者后序中首先依次找出根节点,前序从前往后,后序从后往前,接着在中序中确定该节点的位置,并计算出左右子树的长度,确定参数的指即可。 //根据中序和先序 vector************** int Find(vector<char>& in, int val) { for (int i=0;i<in.size();i++)原创 2021-08-27 10:53:50 · 400 阅读 · 0 评论 -
二叉树代码--各个遍历递归与非递归--层次--Z型--reverseZ型
本文总结的包括先序、中序、后序的递归与非递归写法,此外,还有常见的Z型、层次、以及reverse-Z型,有不清楚的地方欢迎置评。 #include<stack> #include<limits.h> #include<queue> using namespace std; typedef struct BTtree{ BTtree* left; BTtree* right; char val; BTtree() : val(0), left (nullptr),原创 2021-08-27 10:40:28 · 110 阅读 · 0 评论 -
归并排序的递归与非递归写法
递归的归并排序很常见,本文在递归的基础上,给出了非递归的写法。 //递归的写法 void Merge(vector<int>& ans, vector<int>& src, int left, int mid, int right) //对一个vector中两个排序好的部分进行合并 { int i = left, j = mid+1, k=left; while (i<=mid && j<=right) { ans[k++]原创 2021-08-27 10:14:40 · 129 阅读 · 0 评论 -
C++实现优先队列
本文实现的是STL中,容器priority_queue,该容器底层是一个大根堆。 template<class type> class Priority_queue{ private: vector<type> data; //使用vetcor存储数据 void UpFilter(int end) //向上过滤,将大的数往上挪动 { int j = end; int i = (j-1)/2; type tmp = data[j]; while (j >原创 2021-08-27 09:58:55 · 236 阅读 · 0 评论