数据结构
无名05627
这个作者很懒,什么都没留下…
展开
-
线索二叉树
上面的图中会出现空指针的情况,比如中序遍历的3号和5号,这时加上一个新增节点即可,这样就构成了回路。一个前序,中序线索化的完整例子:节点信息typedef struct BiTree_clue{ int data;//数据内容 BiTree_clue *lchild, *rchild;//左右孩子节点的地址 PointerTag ltag, rtag...原创 2018-08-15 22:13:59 · 694 阅读 · 0 评论 -
并查集
并查集:并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。举个例子 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。 以下面这组数据输入数...原创 2018-08-22 11:57:19 · 202 阅读 · 0 评论 -
邻接表and十字链表
邻接表: 每一行都可以看成一个单链表,第一行中,v0-1-3可以得到,v0的出度为v1和v3。邻接表完整代码:#include <iostream>using namespace std;const int MAX_V = 15;//边节点typedef struct Edge_node { char data; Edge_node *ne...原创 2018-08-19 17:03:14 · 474 阅读 · 0 评论 -
赫夫曼树-C++实现
赫夫曼树,即最优二叉树。 给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。构造赫夫曼树: 1. 把节点的权值按从小到大的顺序排列。 2. 从序列中取出前两个(最小),作为孩子节点,求出其父节点的权重并加入到序列。 3...原创 2018-08-17 20:25:39 · 1022 阅读 · 1 评论 -
邻接表——数组
邻接表用数组来实现。采用头插法。#include <iostream>using namespace std;const int H = 10;int main(){ int u[H*2],v[H*2],w[H*2]; int first[H];//first[i]表示i号节点的第一条边 int next[H*2];//next[i]表示第i条边的下...原创 2018-08-25 18:34:46 · 511 阅读 · 0 评论