![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
SimOws
这个作者很懒,什么都没留下…
展开
-
二叉树的层序遍历
在这里插入代码片@TOC template<class T>//层序遍历 void Level(BTNode<T>* t) { if(!t) return; queue<BTNode<T>*> q; q.push(t); while(!q.empty()) { BTNode<原创 2018-10-01 17:00:45 · 94 阅读 · 0 评论 -
二叉树的三种递归遍历算法
前序遍历 template<class T>//前序遍历递归算法 void PreOrder(BTNode<T>* t) { if(!t) return; cout<<t->data; if(t->left) PreOrder(t->left); if(t-&am原创 2018-10-01 17:13:58 · 1490 阅读 · 0 评论 -
二叉树的三种非递归遍历算法
template<class T>//中序遍历递归算法 void InOrderN(BTNode<T>* t) { if(!t) return; stack<BTNode<T>*> s; while(t||!s.empty()) { if(!t) { BTNode<T>* a; a=s.top(); ...原创 2018-10-01 17:43:38 · 513 阅读 · 0 评论 -
完整哈夫曼编码
哈夫曼编码是应用堆实现前缀编码,是的使用频率越高的字符,译码的长度越短。 注,写出编码函数 code和tocode 的关键是利用深搜和准确记录经过的路径,我使用的是一个char[] a字符数组记录路径,一个整数 n 记录当前经过的路径数,如果走错则将n–,表示后退,最后遍历a[n]即可。 1、主文件 #include&lt;iostream&gt; #include"BTNode.h" #inc...原创 2018-10-13 01:48:08 · 636 阅读 · 0 评论 -
堆的构建和测试
1.堆的构建代码 #include<vector> using namespace std; template<class T> class Heap { vector<T> vec; int size; void BuildHeap(void){ for(int i=size/2-1;i>=0;i--) PercolateDown...原创 2018-10-09 22:25:37 · 141 阅读 · 0 评论 -
堆排序算法
**堆排序是时间复杂的为 nlog(n)的算法,性能较好,不用开辟新的空间,值得我们好好学习。 ** #include&amp;lt;iostream&amp;gt; using namespace std; template&amp;lt;class T&amp;gt; void PercolateDown(T* a,int pos,int size) { int p=pos; T temp=a[p]; i原创 2018-10-10 23:17:36 · 132 阅读 · 0 评论 -
最小生成树Prim算法
template<class T> bool Graph<T>::Prim(const T& v,PathData* E,int ne) { int s=FindNode(v); if(s==-1) { return 0; } PathData item; double cost; int id=0; for(int i=0;i<=ne;...原创 2018-11-11 11:52:21 · 249 阅读 · 0 评论 -
最小生成树,Kruskal
//最小生成树,Kruskal template<class T> bool Graph<T>::Kruskal(PathData* E,int ne) { Heap<PathData> H; int nv=ne+1; int i,j,id,*DS=new int [nv]; for(i=0;i<nv;i++) { DS[i]=-1; } ...原创 2018-11-11 11:55:11 · 169 阅读 · 0 评论