UVa 699 下落的树叶】的更多相关文章

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=640 给一颗二叉树,每个结点都有一个水平位置,左子节点在它左边一个单位,右子节点在右边一个单位.从左向右输出每个水平位置的所有结点的权值之和. 一开始还建了树,后来发现建了树也啥用.哎,到现在为止,我的递归思想还是太弱了. #include<iostream> #include&…
UVa 699 The Falling Leaves(递归建树) 假设一棵二叉树也会落叶  而且叶子只会垂直下落   每个节点保存的值为那个节点上的叶子数   求所有叶子全部下落后   地面从左到右每堆有多少片叶子 和UVa 839 -- Not so Mobile(树的递归输入)有点像  都是递归输入的  一个节点(设水平位置为p)  则它的左右儿子节点的水平位置分别为  p-1  p+1   也是可以边输入边处理的  输入完也就得到答案了   注意每个样例后面都有一个空行  包括最后一个 #…
UVA.699 The Falling Leaves (二叉树 思维题) 题意分析 理解题意花了好半天,其实就是求建完树后再一条竖线上的所有节点的权值之和,如果按照普通的建树然后在计算的方法,是不方便实现的,思维转换,在数组中实现,从根节点,向左的话即在a[root-1]的位置累加上节点权值,再向左即在a[root-2]位置累加权值,向右则在a[root+1]的位置累加权值,以此类推,方可实现求和的要求. 代码总览 #include <cstdio> #include <cstring&…
题目描述: 原题:https://vjudge.net/problem/UVA-699 题目思路: 1.依旧二叉树的DFS 2.建树过程中开个数组统计 //紫书源代码WA AC代码: #include <iostream> #include <cstring> using namespace std; ; int sum[maxn] ; void buildtree(int val,int p) //建树,p为树根的水平位置 { int vl,vr; ) return ; sum[…
意甲冠军:我几乎不记得的题意!.! 它是一个长坑..我们从根节点开始,留下每一步,保存横坐标1,正确的一步加上横坐标1. 那么同样的横坐标统计data值总和. 思维:我来想,这可以递归成就.上就能够算了.用一个数组来存各横坐标的data值,然后每来一个该横坐标的结点就直接加上就能够了.完了再遍历输出. 非常easy的,思路也非常清晰.本来以为能够一次过的,结果4次TLE+6次WA. . .简直破纪录了! .開始TLE的原因是while死循环.由于我传的flag变量没用指针.一直不能break出循…
每年到了秋天树叶渐渐染上鲜艳的颜色,接着就会落到树下来.假如落叶发生在二叉树,那会形成多大的树叶堆呢?我们假设二叉树中的每个节点所落下的叶子的数目等于该节点所储存的值.我们也假设叶子都是垂直落到地面上(真感谢没有风把他们吹的到处都是).最后,我们再假设节点之间水平的距离是以下列方式定义:某个节点到其左子树以及到其右子树的水平距离均为1.以下图来说明: 含有5和含有6的节点位于同一水平位置(当然,他们垂直的位置不同).含有7的节点位于含有5的节点和含有6的节点左边一个位置.而含有3的节点则位于含有…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3QAAAMsCAIAAACTL3d2AAAgAElEQVR4nOx9y7GuPA4tKRADk/92T8mBEIiBFMiADMiABC7zvsW4qxh3FRmQg+9gFSpt2Rbm9T321hqcOpsPbFkvC1nYmTMYDAaDwWAwGO7A//k//yd7Nw0Gg8FgMBgMhl+Cf//73xZcGgwGg8FgMBjugWUuDQaDwWAwGAy3wYJLg8FgMBgMBsNts…
题意: 按先序方式输入一棵二叉树,节点是带权的,左孩子在父节点的左一个单位,右孩子在父节点的右一个单位,从左到右输出相同水平位置节点之和. 分析: 做了好几道二叉树的题,代码应该也很好理解了.这里maxn开始设了200.500都RE,后来索性开了2000,AC了 紫书上面init函数最后应该加一句 return true; //#define LOCAL #include <iostream> #include <cstdio> #include <cstring> u…
题意:给出按先序输入的一颗二叉树,分别求出从左到右的相同横坐标上的节点的权值之和 递归建树,然后用sum数组分别统计每一个横坐标上的权值之和 感觉建树都在递归递归递归= =慢慢理解吧 #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<algorithm> using namespace std; typedef long long LL;…
额,刘汝佳小白里面的配套题目. 题目求二叉树同垂直线上结点值的和. 可以用二叉树做,挺水的其实. 尝试使用dfs实现了:开一个大点的数组,根节点为最中间那点,然后读取时就可以进行和的计算了. 代码: #include <cstdio> #include <cstring> const int maxn = 10000; int n = 500, tmp, num = 1; int cnt[maxn] = {0}; bool input(void) { scanf("%d&…