
Volume 2.1 Binary Trees
文章平均质量分 68
深蓝色的猫
一个努力成长为大牛的蒟蒻程序媛
展开
-
UVa OJ 112
1、这道题对我来说有很大难度,但我是完全靠自己做的,晚上6点开始,凌晨3点才做出来,花了这么长时间,而且是一次AC了这道通过率仅为20%的题目,其中的成就感简直无法用语言形容。2、这道题考察树的建立以及宽度优先搜索。首先,题目给出的字符串是不规则的,要先整理成我们常见的形式才可以,具体用getchar,见代码。3、其次,树的建立利用了栈,本题的难点是栈不可能既保存字符型的括号和结点型的结点原创 2013-07-31 03:00:33 · 963 阅读 · 4 评论 -
UVa OJ 548
1、本题给出中序遍历序列和后序遍历序列,要求输出从根节点到叶子节点取值之和最小的一条路径的叶子结点值,若相同,则输出其中最小的值。2、TLE了一次,因为while(1)没有给出break语句,造成死循环,下次不能再犯这种显而易见的低级错误了。3、树的建立已经轻车熟路。bfs也较为熟练。4、美中不足的是忘记删除结点了,造成内存泄露,以后注意。#include #include原创 2013-08-02 17:07:33 · 389 阅读 · 0 评论 -
UVa OJ 712
1、题目描述很长,实际比较简单。我一直觉得二叉树和二进制的关系很微妙。。。其实走的路线完全可以看作是一个二进制数(从高位到低位),算出的值就对应叶子节点的编号。一次AC~#include using namespace std;int main(){ int n,m,temp,ans,x[8],kase=0; char s[8][3],leaf[130];原创 2013-08-27 14:27:12 · 402 阅读 · 0 评论 -
UVa OJ 327
1、终于AC了~WA了快十次了。。。好吧我激动了~按照惯例,还是分点说一下得到的经验。2、本题虽然在“二叉树”分类里,但我觉得逐字符处理更方便。注意原式中有好多空格,预处理的时候要消去。否则在判断加减号是否是前后缀的时候非常麻烦!!!3、注意访问的时候不要越界,比如i=0时就不要访问a【i-1】,我就是因为这个错了一次。4、注意“表达式的值”的定义。++a的值为2而a++的值为1。原创 2013-08-27 21:12:18 · 432 阅读 · 0 评论 -
UVa OJ 699
1、通过本题,学习了“表示出空节点”的字符串的建树方法。用数组来模拟树,这真是个十分巧妙的想法,加深了对二叉树递归性质的理解。2、刚开始我把数组开到50,因为题目说输出不会超过80个字符位置,我想最多就40个结点吧,开到50保险一点,然后以25作为根节点,没想到WA了。仔细想后才发现:谁也没有说过树是左右对称的,有可能四十个结点全在树的左边或右边,那样25显然不够。而且和平常做过的题相比,这点原创 2013-08-27 18:00:21 · 517 阅读 · 0 评论 -
UVa OJ 297
1、真是一言难尽啊。。。四叉树的建立+合并+遍历,居然一次AC了,不可思议~2、需要注意的就是if else语句里面的else if语句,不要偷懒想省掉else,我以为加不加都一样所以这次吃亏了。下次注意。#include #include #include using namespace std;typedef struct Tnode{ int v; s原创 2013-08-17 16:47:34 · 425 阅读 · 0 评论 -
UVa OJ 839
1、感觉《算法竞赛入门经典》的书后习题还真不是很好做。。。2、这道题我理解错了题意,所谓“天平平衡”应该是指每一个“子天平”也要平衡,我刚开始忽略了这一点,修改后AC。3、发现代码写得越复杂越容易出错,思路清晰、结构分明的代码更容易AC。#include#includeusing namespace std;typedef struct Tnode{ int wl原创 2013-09-05 23:22:01 · 353 阅读 · 0 评论 -
UVa OJ 10562
1、本题有两个易错点,第一个是输入可能为空,需要特殊处理,如果不注意可能会RE;第二个是结点可能不是字母,题目说了,是“除了四个字符之外的可打印字符”,所以应该加一个is_valid函数。我在没有判断is_print之前一直在WA,加了后AC,也不知道为什么,可能是因为我对ASCII码还不够熟悉吧。2、至此,二叉树部分结束。#include#include#include#in原创 2013-09-06 15:24:34 · 465 阅读 · 0 评论