树
Bread Sir
记录算法之路
展开
-
树—根据中序遍历和后序遍历(或者前序和中序)构造二叉树
因为从刘汝佳老师的书中一题发现有一个知识点需要好好理解,它就是如何通过二叉树的中序和后序遍历(前序和中序)构造出这课二叉树。中序和后序:这个过程如下: 1.根据后序序列的最后一个元素建立根结点 2.从中序序列中找到这个根结点的位置,确定此根结点的左右子树的中序序列(左边的序列为左子树,右边的即为右子树) 3.在后序序列中确定左右子树的后序序列 4.由左子树的后序序列和中序序列构造出左子树,同原创 2017-04-02 13:13:26 · 490 阅读 · 1 评论 -
数据结构—树和二叉树-2.二叉树的层次遍历(BFS)
上一篇文章对二叉树做了一个简单的小练习,也是对二叉树有了一个大概的了解,接下来这一篇便是二叉树中即为关键的算法——二叉树的层次遍历,即BFS。 这个算法的重要性呢不再多说,主要用于求单源最短路径问题(无权值,即单权值的树)。BFS——宽度优先遍历顾名思义:先遍历完与初始状态最近的状态,然后再遍历与遍历完状态的最近的状态。从开始状态–>只需一次转移就到达的状态–>只需两次就到达的状态–>……..如上原创 2017-04-02 10:10:39 · 597 阅读 · 0 评论 -
POJ 1056 immediately decodable (判断是否有前缀)
An encoding of a set of symbols is said to be immediately decodable if no code for one symbol is the prefix of a code for another symbol. We will assume for this problem that all codes are in binary, t原创 2017-04-16 14:55:18 · 787 阅读 · 0 评论 -
HDU 1251 统计难题 (Trie树——字符串算法)
在vj上拉了一些题,有一题它需要用到trie树。 题目大意是这样的:给一个单词表(只有小写字母组成,不会有重复的单词出现),让我们统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Sample InputbananabandbeeabsoluteacmbabbandabcSample Output2310这种前缀的问题,在我不知道trie树的时候,就暴力嘛(暴原创 2017-04-16 12:19:09 · 297 阅读 · 0 评论 -
数据结构—树和二叉树-二叉树的递归遍历(DFS)
上一篇文章整理了一下二叉树的BFS,很重要的哦。那这一篇文章就来点更重要的东西吧——DFS,和BFS是不是兄弟啊!我们先来个铺垫,如何遍历二叉树?上一篇文章给了一个答案,BFS是按照层来遍历,“ 如果你愿意一层一层一层的剥开我的心”咳咳~~23333,哈!对!就像洋葱,一层层地遍历。那还有其他的遍历方式吗?当然还有,就是递归遍历。DFS—深度优先遍历二叉树的深度优先遍历方式有三个: -先序遍历原创 2017-04-02 11:28:21 · 2867 阅读 · 0 评论 -
二叉搜索树
BY《INTRODUCIRION TO ALGORITHM》定义和性质:二叉搜索树是以一棵二叉树来组织的。每个结点包含key,left,right,p属性,分别是结点的关键字,指向结点的左孩子,右孩子和双亲。性质: 对于任何结点x,其左子树的关键字最大不超过x.key,其右子树的关键字最小不低于x.key。且不同的二叉搜索树可以代表同一组值的集合。如图所示是一棵二叉搜索树:遍历:和二叉树的遍历相同原创 2017-05-21 08:47:35 · 271 阅读 · 0 评论 -
数据结构二叉树的实现(#表示空结点)
#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef char DataType;typedef struct BitNode{ DataType data; struct BitNode *lchild, *rchild; }*BitTree;/*初始化一个原创 2017-06-16 21:10:47 · 9642 阅读 · 2 评论