- 博客(6)
- 收藏
- 关注
原创 并查集基本操作及扩展
一.基本定义1.并查集是一种维护集合的数据结构,其名字中的并 查 集分别取自union(合并),find(查找),set(集合)。支持下面两个操作合并:合并两个集合。查找:判断两个元素是否在一个集合中。2.并查集的实现。int father[]。用一个father[]数组保存集合。其中father[2]=3意为元素2的父亲结点为元素3。多个元素属于同一个集合依据为具有相同的根节点。...
2018-10-23 21:50:54 363 2
原创 Tire树的基本应用
上一篇主要讲了Tire的基本操作与实现方法,接下来开始了解字典树的具体应用。1.phone list(判断一个字符串是不是另一个字符串的前缀)原题链接:http://poj.org/problem?id=3630DescriptionGiven a list of phone numbers, determine if it is consistent in the sense t...
2018-10-30 16:30:30 1381 1
原创 Trie字典树基本操作
一、定义 字典树,也称字母树,指的是某个字符串集合对应的有根树,树的每条边上恰好对应一个字符,每个顶点代表从根到该结点的路径所对应的字符串。Tire很好的利用了串的公共前缀,节省了存储空间。二、基本操作 1.初始化。一个空Tire树仅包含一个根结点,该结点的字符指针均为空。 2.插入数据。当需要插入一个字符串s时,令一个指针p起初指向根结点,然后,依次扫描s中的每个字符c...
2018-10-30 14:26:36 557
原创 堆的定义与堆排序
一、基本定义堆是一棵完全二叉树,树中每个结点的值都不小于(或不大于)其根节点的值。根据大小关系进行分类,将根结点不小于其左右孩子结点值的堆称为大顶堆。将根结点不大于其左右孩子结点值的堆称为小顶堆。堆一般用于优先队列的实现,优先队列默认使用大顶堆。二、堆的基本操作1、给定一个序列,如何建堆。根据初始序列,先从左到右,从上到下,建立一棵度为2的树。之后对树中各个结点进行调整,直到该树是大顶...
2018-10-26 20:29:58 880
原创 二叉树的遍历及相关操作
一、先序遍历(根左右),中序遍历(左根右),后序遍历(左右根)。只是根结点的遍历顺序发生变化,但左子树的遍历一定在右子树遍历之前进行。//先序遍历void preorder(node* root){ if(root==NULL)return; //递归边界。 printf("%d",root->data); //访问根结点。 preorde...
2018-10-25 09:57:57 207
原创 二叉树的基本定义
一、二叉树的递归定义1.要么二叉树没有根节点,是一颗空树。2.要么二叉树由根节点,左子树和右子树组成,且左子树和右子树都是二叉树。请注意二叉树与度为2的树的区别:对树来说,结点的子树是不区分左右顺序的。度为2的树只能说明树中所有结点的子结点个数不超过2。而二叉树其左右子树是严格区分的,不能随意交换左子树和右子树位置。二、二叉树的存储结构此处二叉树用链表来定义。(对链表不太熟悉的...
2018-10-24 21:27:33 237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人