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