二叉树
aozil_yang
这个作者很懒,什么都没留下…
展开
-
例题6-7 UVA 122 - Trees on the level 树的层次遍历
因为过年,这个题看了比较长的时间,但是看懂了后,感觉题目解析非常巧妙这篇博客就记录下自己学到的东西吧!1。在输入方面,直接开了一个bool read_input()函数,这样在输入EOF时,就返回false,所以可以在main函数里直接这样写:while(read_input()){...}。2。在这个read_input 函数里面,用到了sscanf (&s[1]),这样就把字符串从原创 2016-02-11 17:25:29 · 771 阅读 · 0 评论 -
团体程序设计天梯赛-练习集 -- L3-016. 二叉搜索树的结构(模拟)
题意:建立搜索二叉树,然后就是一系列询问了。有几个坑:要查询的数值可能不在二叉树上。数值不是1~n的。需要以下标建立二叉树或者 离散化一下。可能是时间紧迫问题, 差了四分 就是没想到 数值可能不在二叉树上了。#include #include #include #include #include #include using namespace std原创 2017-04-22 22:51:46 · 974 阅读 · 0 评论 -
例题7-7 UVA 1354 Mobile Computing (搜索+二叉树(类哈夫曼树))
思路:想一想就可以知道,一个结点要么有两个儿子,要么没儿子。那么这就很像哈夫曼树,因此我们可以枚举所有的哈夫曼树(任意枚举两个不同的结点来合并)然后从根结点开始遍历二叉树,在遍历的同时,来枚举左边 和右边的最大值。然后R-L 便是这个二叉树的宽度。更新一下答案即可!有一个小小的坑把,没注意到:就是只有一个砝码的时候,答案应该是0 不是-1.想一想还是很实际的:只原创 2017-01-22 16:17:21 · 404 阅读 · 0 评论 -
UVA 12219 Common Subexpression Elimination (dfs瞎搞)
大体题意:给你一个字符串按照二叉树的形式,用消除公共表达式的方法可以减少表达式树上的的结点,输出最少的结点的图,详细见原题。思路:写的比较乱,感觉时间还行吧。借鉴一下吧。先写dfs 建树,在写个dfs2 从叶子结点向上更新父结点 重新标号,使得相同类的结点归为一类。在写个dfs3,重新从根节点标号,变得有序。最后print 函数 要么输出数字 要么输出字符串 讨论一下即可原创 2017-02-20 22:23:30 · 386 阅读 · 0 评论 -
Gym 100962E Elvis Presley (二叉树模拟 + set)
大体题意:给你一棵二叉树,上面按层序遍历编好了号,给你两个节点,要求输出一系列点,这些点不能是这两个点的祖先,不要祖先,要祖先相邻的点,最后也要这两个点?吐槽:好坑啊,这就是一个大水题,当然要读懂题目(= =好弱!)思路:直接模拟走就可以了,都是log级别的相当于二分!如果其中一个点是另一个点的祖先,那么肯定是-1了,否则就模拟:先把这两个点的祖先都存下来,最后原创 2016-09-25 18:32:47 · 542 阅读 · 0 评论 -
UVALive 7363 A Rational Sequence (二叉树)
大体题意:二叉树每一个点的权值都是一个分数形式,根节点是1/1,(p/q)左儿子是p/(p+q),右儿子是(p+q)/q.每个点的编号按照层序遍历依次给出,然后告诉你个分数,求得这个分数结点的编号!思路:直接模拟即可!当p!=q 就一直循环,然后分四种情况讨论,差值和p的大小关系!模拟时记录一下路径,在从根节点回来算一下编号即可!#include#include#inclu原创 2016-08-16 02:09:22 · 473 阅读 · 0 评论 -
团体程序设计天梯赛-练习集L2-011 玩转二叉树(构造二叉树+BFS)
L2-011. 玩转二叉树时间限制 400 ms内存限制 65536 kB代码长度限制 8000 B判题程序 Standard 作者 陈越给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不原创 2016-06-16 00:26:43 · 2338 阅读 · 0 评论 -
团体程序设计天梯赛-练习集 -- L3-010. 是否完全二叉搜索树
L3-010. 是否完全二叉搜索树时间限制 400 ms内存限制 65536 kB代码长度限制 8000 B判题程序 Standard 作者 陈越将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。原创 2016-07-16 21:17:24 · 751 阅读 · 0 评论 -
UVA 122 && HDU 1622 Trees on the level(构造二叉树+BFS层序遍历)
Trees on the levelTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 783 Accepted Submission(s): 268Problem DescriptionTrees are原创 2016-06-09 22:22:49 · 795 阅读 · 0 评论 -
HDU 1710 Binary Tree Traversals(二叉树的后序遍历)
Binary Tree TraversalsTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5382 Accepted Submission(s): 2496Problem DescriptionA b原创 2016-06-09 17:35:57 · 600 阅读 · 0 评论 -
习题6-3 UVA 536 Tree Recovery 二叉树重建
这个题类似于例题6-8给你先序遍历,中序遍历,求后序遍历,直接模仿例题6-8写就行了写个build函数。先序遍历第一个字符就是根,然后再中序遍历中找到根,不断的递归,递归完成输出即可!先build 左,在build 右,这样就默认成了后序遍历 输出即可!代码如下:#include#includeconst int maxn = 30;char s1[maxn],s原创 2016-02-20 20:30:40 · 492 阅读 · 0 评论 -
Educational Codeforces Round 18 -- D. Paths in a Complete Binary Tree(二叉树模拟)
题意:给你一棵完全二叉树, 要求从某个结点出发, 开始行走,可以向上走,向左走,向右走, 模拟这个过程。思路:观察那个二叉树的形状, 直接二分走就可以找到每一个结点。我们先找到那个结点,然后从这个结点进行二分模拟行走, 因为有向上走的情况存在,所以可以开一个栈,来维护所走过的路。#include using namespace std;typedef long long原创 2017-04-27 21:38:31 · 411 阅读 · 0 评论