【数据结构】The Falling Leaves(6-10)】的更多相关文章

[UVA699]The Falling Leaves 算法入门经典第6章例题6-10(P159) 题目大意:有一颗二叉树,求水平位置的和. 试题分析:乱搞就可以过,将树根节点的pos记为0,向左-1,向右+1,统计答案即可. #include<iostream> #include<cstring> #include<cstdio> #include<vector> #include<queue> #include<stack> #in…
本文纯属原创.转载请注明出处,谢谢. http://blog.csdn.net/zip_fan. Description Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on the trees, followed quickly by the falling leaves accumulating under the trees. If the sa…
Description Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on the trees, followed quickly by the falling leaves accumulating under the trees. If the same thing happened to binary trees, how large woul…
  // UVa699 The Falling Leaves // 题意:给一棵二叉树,每个节点都有一个水平位置:左儿子在它左边1个单位,右儿子在右边1个单位.从左向右输出每个水平位置的所有结点的权值之和.按照递归方式输入,-1表示空 树 // UVa699 The Falling Leaves // Rujia Liu // 题意:给一棵二叉树,每个节点都有一个水平位置:左儿子在它左边1个单位,右儿子在右边1个单位.从左向右输出每个水平位置的所有结点的权值之和.按照递归方式输入,-1表示空树…
The Falling Leaves Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description   Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on the trees, followed quickly b…
HDU 3791 Falling Leaves 二叉搜索树  Figure 1Figure 1 shows a graphical representation of a binary tree of letters. People familiar with binary trees can skip over the definitions of a binary tree of letters, leaves of a binary tree, and a binary search tr…
UVA.699 The Falling Leaves (二叉树 思维题) 题意分析 理解题意花了好半天,其实就是求建完树后再一条竖线上的所有节点的权值之和,如果按照普通的建树然后在计算的方法,是不方便实现的,思维转换,在数组中实现,从根节点,向左的话即在a[root-1]的位置累加上节点权值,再向左即在a[root-2]位置累加权值,向右则在a[root+1]的位置累加权值,以此类推,方可实现求和的要求. 代码总览 #include <cstdio> #include <cstring&…
uva 699 紫书P159 Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on the trees, followed quickly by the falling leaves accumulating under the trees. If the same thing happened to binary trees, how large w…
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3791 中文题不说题意. 建立完二叉搜索树后进行前序遍历或者后序遍历判断是否一样就可以了. 跟这次的作业第一题一模一样,输出输入改下就好 水的半死. 另外一题我以为是一定要一遍读入一边输出,被骗了,最后一起输出就好.等星期一再发那题的题解. #include<cstdio> #include<cstring> int cur; struct node { char c; node *lef…
UVa 699 The Falling Leaves(递归建树) 假设一棵二叉树也会落叶  而且叶子只会垂直下落   每个节点保存的值为那个节点上的叶子数   求所有叶子全部下落后   地面从左到右每堆有多少片叶子 和UVa 839 -- Not so Mobile(树的递归输入)有点像  都是递归输入的  一个节点(设水平位置为p)  则它的左右儿子节点的水平位置分别为  p-1  p+1   也是可以边输入边处理的  输入完也就得到答案了   注意每个样例后面都有一个空行  包括最后一个 #…
Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on thetrees, followed quickly by the falling leaves accumulating under the trees. If the same thing happenedto binary trees, how large would the piles of…
算法复杂度主方法 有时候,我们要评估一个算法的复杂度,但是算法被分散为几个递归的子问题,这样评估起来很难,有一个数学公式可以很快地评估出来. 一.复杂度主方法 主方法,也可以叫主定理.对于那些用分治法,有递推关系式的算法,可以很快求出其复杂度. 定义如下: 如果对证明感兴趣的可以翻阅书籍:<算法导论>.如果觉得太难思考,可以跳过该节. 由于主定理的公式十分复杂,所以这里有一种比较简化的版本来计算: 二.举例 二分搜索,每次问题规模减半,只查一个数,递推过程之外的查找复杂度为O(1),递推运算时…
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. Input Specification: Each input file contains one test case. For each case, the first line gives a positive integer N (≤10) which is the total number o…
这道题我的思路是先通过递归构建树,然后进行遍历将位置和保存在map映射中,最后按顺序输出map集合中的值. 至于如何遍历,我是依次尝试了宽度优先遍历和深度优先遍历,当然这都是可以的.不过期间写错了很多次.在此总结以下在这道题目中犯得错误(逻辑错误): 同一树,根节点地址不变,却多次使用 同一映射,不经清空却多次添加 遍历时在队列和栈中添加进的节点不是当前节点(即写错节点名称) 栈溢出导致结果出错 对一个节点分配内存只能在同一函数中进行 //否则需要添加指针引用(*指针也需要引用) .... 以下…
到目前为止,我们一直在谈论的数据结构都是"线性结构",不论是普通链表.栈还是队列,其中的每个元素(除了第一个和最后一个)都只有一个前驱(排在前面的元素)和一个后继(排在后面的元素),但是在深入浅出数据结构(9)中,我们发现有的时候"线性结构"是不能满足我们的需求的,必然存在某些场景需要我们使用非线性的数据结构.而今天,我们要讨论的就是典型的非线性数据结构--树. 该从哪里开始谈起树是一个很麻烦的问题,我想了很久决定还是先给出树的"模样",再说说树…
二叉树和二叉查找树 概念 树是一种非线性的数据结构,以分层的方式存储数据. 树被用来存储具有层级关系的数据,比如文件系统的文件: 树还被用来存储有序列表. 一棵树最上面的节点称为根节点. 如果一个节点下面连接多个节点,那么该节点称为父节点,它下面的节点称为子节点. 一个节点可以有0个.1个或多个子节点. 没有任何子节点的节点称为叶子节点. 二叉树是一种特殊的树,它的子节点个数不超过两个. 二叉树具有一些特殊的计算性质,使得在它们之上的一些操作异常高效. 以某种特定顺序访问树中所有的节点称为树的遍…
题目链接:https://vjudge.net/problem/UVA-699 题目大意:给一颗二叉树,每个结点都有一个水平位置 :左子节点在它左边的1个单位,右子结点在它右边1个单位.从左向右输出每个水平位置的所有结点的权值之和. 思路:用sum[i]表示第i个水平位置的总和  .  其实这题并不难  但是因为刚刚学数据结构  二叉树并不熟悉  所以也列出来 看代码: #include<iostream> #include<string.h> #include<stdio.…
树的概览 树是层级式的集合 树中最顶端的节点叫做根 个或多个后继(子节点). 没有子节点的节点叫做叶子节点 拥有子节点的节点叫做内部节点 ,其子节点位于层级1,依次类推.一个空树的层级为 -1 树的术语 术语概览 示列 普通的树和二叉树 二叉树中,每个节点最多只有两个子节点,分别称为左子节点和右子节点 树的递归定义 普通的树 要么为空,要么包含一个有限的节点的集合 T.有一个和所有其他节点不同的节点r,称为根.此外,集合 T - {r}可以被划分为不相边的子集.每个子集都是一个普通的树. 二叉树…
0.唔.这道题 首先要明确根节点在哪儿 初始化成pos=maxn/2; 1.因为是先序的输入方法,所以这个建树的方法很重要 void build(int p) { int v; cin>>v; ) { sum[p]+=v; build(p-),build(p+); } } #include <iostream> #include <cstring> using namespace std; ; int sum[maxn]; int k; void build(int p…
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…
题意:给出一棵字母二叉树删除叶子节点的序列,按删除的顺序排列.让你输出该棵二叉树额前序遍历的序列.思路:先把一棵树的所有删除的叶子节点序列存储下来,然后从最后一行字符串开始建树即可,最后遍历输出.    这里为方便起见,将子母转化成整数值存储. #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> /* AC 题意:给出一棵字母二叉树删除叶子节点的序列,…
题意:给出按先序输入的一颗二叉树,分别求出从左到右的相同横坐标上的节点的权值之和 递归建树,然后用sum数组分别统计每一个横坐标上的权值之和 感觉建树都在递归递归递归= =慢慢理解吧 #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<algorithm> using namespace std; typedef long long LL;…
题意:给出一些字符串,从上到下的建树,输出其前序遍历 像前面那一题一样,先建树,然后再递归前序遍历 不过想像上一题那样用数组建树,建树和上题一样的办法,可是应该怎么输出前序遍历呢= = 还是看的题解= = #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<algorithm> using namespace std; typedef lo…
额,刘汝佳小白里面的配套题目. 题目求二叉树同垂直线上结点值的和. 可以用二叉树做,挺水的其实. 尝试使用dfs实现了:开一个大点的数组,根节点为最中间那点,然后读取时就可以进行和的计算了. 代码: #include <cstdio> #include <cstring> const int maxn = 10000; int n = 500, tmp, num = 1; int cnt[maxn] = {0}; bool input(void) { scanf("%d&…
题意:对于每一棵树,每一个结点都有它的水平位置,左子结点在根节点的水平位置-1,右子节点在根节点的位置+1,从左至右输出每个水平位置的节点之和 解题思路:由于上题所示的遍历方式如同二叉树的前序遍历,与天平那题不同,本题不需要构造出完整的结点左右子树,只需要构造出结点的相对位置,每次输入一个结点树,若为-1,则返回,否则依次递归执行input(p-1)与input(p+1). 代码如下: #include<stdio.h> #include<cstring> #include<…
题意:给你一颗二叉树的前序遍历,空子树以-1表示,将左右子树的权值投影到一维数轴上,左儿子位置为根位置-1,右儿子+1求个个整点上的和: 题解:递归,整个过程只需维护一个sum数组. 更新根,更新leftson ,更新rightson; 代码: #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include<stdio.h> #include<algorithm> #include<string>…
本来看着挺难的.大概是由于我多瞟了一眼题解,瞬间认为简单多了.做题就得这样,多自己想想.如今是 多校联赛,然而我并不会做. .. .慢慢来,一直在努力. 分析: 题上说了做多不会超过80行.所以能够开一个数组.这里我是把根节点作为第42个数,能够在建树的同一时候求 出那一列全部数值的和左孩子节点减一,右孩子节点加一.. .写的时候中间出了点小bug,忘了给flag重置0了,调 了好久.. . 第一次提交wa了,由于没有换行,题目要求结果之间有一行空行的. . . 贴代码: #include<st…
题目描述: 原题: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[…
题目链接:http://acm.hust.edu.cn/vjudge/problem/19244 #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <climits> #include <cstring> #include <string> #includ…