writer:pprp date:20171103 题目描述 先将根结点放入一对圆括号中,然后把它的子树按由左而右的顺序放入括号中,而对子树也采用同样方法处理:同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来. 例如下图可写成如下形式 (a(b,c,d,e)) 现在给定一个多叉树的括号表示法,要求你创建多叉树,并按层序序列输出. 输入 多叉树的括号表示法:字符串 输出 层序输出多叉树 样例输入 (a(b,c,d,e)) 样例输出 abcde Pastebin代码 代…
数据结构实习 Problem H 迷宫的最短路径 题目描述 设计一个算法找一条从迷宫入口到出口的最短路径. 输入 迷宫的行和列m n 迷宫的布局 输出 最短路径 样例输入 6 8 0 1 1 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 样例输出 (6,8) (5,7) (4,6) (4,5) (3,4) (3,3) (2,2) (1,1) 代码如下: #incl…
writer:pprp date: 20171103 题目描述 给定一棵二叉树的中序和层序输出,判断是否为平衡二叉树的.如果是,输出YES如果不是输出NO. 输入 树结点个数 中序遍历序列 层序遍历序列 输出 是否是平衡二叉树的判断结论 样例输入 样例1: 3 1 2 3 2 1 3 样例2: 4 1 2 3 4 1 2 3 4 样例输出 样例1: YES 样例2: NO 代码如下: //M: 判别平衡二叉树 #include <iostream> #include <cstring&g…
Huffman Tree 题目描述 对输入的英文大写字母进行统计概率 然后构建哈夫曼树,输出是按照概率降序排序输出Huffman编码. 输入 大写字母个数 n 第一个字母 第二个字母 第三个字母 ... 第n个字母. 输出 字母1 出现次数 Huffman编码 字母2 出现次数 Huffman编码 字母3 出现次数 Huffman编码 - 字母n 出现次数 Huffman编码 样例输入 10 I I U U U I U N U U 样例输出 U 6 1 I 3 01 N 1 00 分析: 采用的…
由二叉树的中序层序重建二叉树 writer:pprp 用层序中序来重建二叉树 代码点这里 其实本质上与前序中序建立二叉树没有什么太大区别 大概思路: 递归解法,对当前层进行处理,通过层序遍历可以得到当前的根节点,然后在中序遍历中找到该节点,对左右两边的内容进行分析,理想情况下应该是可以递归进行下去,找到左子树的中序遍历和层序遍历,找到右子树的中序遍历和层序遍历,然后进行递归,但是可以发现,层序遍历是交错的,所以是需要重新处理以后才能进行递归 现在只要通过处理得到左子树右子树的层序遍历序列就好了,…
用前序中序建立二叉树并以层序遍历和后序遍历输出 writer:pprp 实现过程主要是通过递归,进行分解得到结果 代码如下: #include <iostream> #include <queue> #include <cstdio> #include <cstring> using namespace std; const int N = 1000; struct tree { tree* l; tree* r; int data; tree() { l…
在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文章讲的是TokuDB,不是innodb,相比innodb,TokuDB有着自己的特点. BTree和Fractal tree的比较: 目前无论是SQL Server,还是MySQL的innodb,都是用的B+Tree(SQL Server用的是标准的B-Tree)的索引结构.从理论上来说,这个结构在…
另开一文分析字符串相关的各种算法,以及用到的各种数据结构,包括前缀树后缀树等各种树. 先来一个汇总, 算法: 本文中提到的字符串匹配算法有:KMP, BM, Horspool, Sunday, BF, KR, AC(其中用到了Trie树) 统计字符出现个数.获取KV内容:Trie树(字典树.前缀树) 回文子串长度算法有:Manacher's Algorithm 题目: 最长回文子串 最长重复子串 最长不重复子串 以下为正文: 最长连续回文串(Longest Palindromic Substri…
校门外的树 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的…… 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K=1,读入l.r表示在区间[l,r]中种上一种树,每次操作种的树的种类都不同 K=2,读入l,r表示询问l~r之间能见到多少种树 (l,r>0) 格式 输入格式 第一行n,m表示道路总长为n,共有m个操作 接下来m行为m个操作 输出格式 对于每个k=2输出一个答案 样例1 样例输入1 5 4 1 1…
[UOJ228]基础数据结构练习题(线段树) 题面 UOJ 题解 我们来看看怎么开根? 如果区间所有值都相等怎么办? 显然可以直接开根 如果\(max-sqrt(max)=min-sqrt(min)\)怎么办? 此时意味着虽然开根出来的值不同,但是减去的值相同 举个例子,比如\(8,9\) 开根后是\(2,3\) 虽然值不同,但是差相同 所以,我们把开根换成区间减法 当出现上述两种情况时下放减法标记即可 #include<iostream> #include<cstdio> #in…