树形结构——树与二叉树
树与二叉树
Alex_McAvoy
想要成为渔夫的猎手
展开
-
树形结构 —— 树与二叉树
【概述】树是一种非线性的、递归定义的有序数据结构,能很好地描述有分支和层次特性的数据集合。二叉树是树的一种形态,是 n 个结点的有限集合,该集合或为空集(空二叉树),或由一个根结点与两棵互不相交的,称为根结点的左子树、右子树的二叉树构成。树与二叉树是最基本的树形结构,掌握好树与二叉树,对后续树形结构的学习有极大的帮助。关于树:点击这里关于二叉树:点击这里【相关算法】常见...原创 2020-02-06 21:24:19 · 1689 阅读 · 1 评论 -
树形结构 —— 树与二叉树 —— 树的数据生成器
为方便测试数据,给出一个树的数据生成器。树的结点为 1~10 个,边权为 1~100,各点编号随机化struct Edge { int x, y; int dis;} edge[N];int n,edgeTot;int tot, x[N], y[N], dis[N];int id[N], father[N];int Find(int x) { return fa...原创 2020-02-10 20:02:15 · 2196 阅读 · 0 评论 -
树形结构 —— 树与二叉树 —— 无根树转有根树
【概述】无根树转有根树是指:当给出 n 个结点与 n-1 条边后,给定一个要指定的根结点的编号 root,建立以 root 为根的树。利用 STL 中的 vector,在输入 n-1 条边后,从 root 开始进行 dfs,遍历其邻接点,递归的将其转换为子树。【实现】vector<int> G[N];int father[N];void dfs(int x,int...原创 2019-08-07 11:06:42 · 1558 阅读 · 1 评论 -
树形结构 —— 树与二叉树 —— 树的直径
【定义】给定一棵树,树中的每条边都有一个权值。树中两点的距离:连接两点的路径边权之和 树的直径:树中最远的两个节点之间的距离 树的最长链:连接树中最远的两个结点的路径【实现】树的直径通常有两种求法,时间复杂度均为O(n)。假设树以 n 个点 n-1 条边的无向图形式给出,存储在邻接表中。1.两次DFS求树的直径通过两次 dfs 可以求树的直径,且更容易计算出直径上的具...原创 2019-01-16 16:01:03 · 1073 阅读 · 0 评论 -
树形结构 —— 树与二叉树 —— 树的中心
【概述】树的中心问题是指:当给出 n 个结点与 n-1 条边后,要选定一个点作为整棵树的根结点,使得从该点到每个叶结点的最长路径最短。树的中心问题主要有两种方法:DFS/BFS 进行搜索、树形 DP 进行状态转移【DFS】根据树的中心问题的描述,显然可以知道,树的中心一定在树的直径上,而且趋于终点,否则它的最远距离只会更远。因此,我们在利用 DFS 寻找树的直径的同时,对于直径...原创 2020-02-09 14:45:48 · 1328 阅读 · 0 评论 -
树形结构 —— 树与二叉树 —— 树的重心
【概述】树的重心也叫树的质心,对于一棵具有 n 个结点的无根树,找到一个点,使得将树变为以该点为根的有根树时,最大子树的结点数最小。简单来说,就是给定一棵 n 个点的树,当删除某点 x 后,使得最大连通块最小,此时点 x 即为树的重心。相关性质:一棵树最多有两个重心,且这两个重心相邻 一棵树添加或删除一个节点时,树的重心最多只移动一条边的位置 把两棵树通过一条边相连,新的树的重...原创 2020-02-10 20:35:30 · 1683 阅读 · 2 评论 -
树的直径(51Nod-2602)
题目一棵树的直径就是这棵树上存在的最长路径。现在有一棵n个节点的树,现在想知道这棵树的直径包含的边的个数是多少?如图所示的数据,这棵树的直径为(1-2-3-6-9)这条路径,包含的边的个数为4,所以答案是4。输入第1行:一个整数n,表示树上的节点个数。(1<=n<=100000)第2-n行:每行有两个整数u,v,表示u与v之间有一条路径。(1<=u,v&l...原创 2019-07-24 09:00:02 · 596 阅读 · 0 评论 -
Naughty Stone Piles(CF-226B)
Problem DescriptionThere are n piles of stones of sizes a1, a2, ..., an lying on the table in front of you.During one move you can take one pile and add it to the other. As you add pile i to pile...原创 2019-07-30 16:07:15 · 303 阅读 · 0 评论 -
Farthest Nodes in a Tree(LightOJ-1094)
Problem DescriptionGiven a tree (a connected graph with no cycles), you have to find the farthest nodes in the tree. The edges of the tree are weighted and undirected. That means you have to find t...原创 2019-01-16 16:25:01 · 441 阅读 · 0 评论 -
T-decomposition(CF-237D)
Problem DescriptionYou've got a undirected tree s, consisting of n nodes. Your task is to build an optimal T-decomposition for it. Let's define a T-decomposition as follows.Let's denote the set o...原创 2019-08-02 10:41:07 · 240 阅读 · 0 评论 -
二叉树输出(信息学奥赛一本通-T1366)
【题目描述】树的凹入表示法主要用于树的屏幕或打印输出,其表示的基本思想是兄弟间等长,一个结点的长度要不小于其子结点的长度。二叉树也可以这样表示,假设叶结点的长度为1,一个非叶结点的长度等于它的左右子树的长度之和。一棵二叉树的一个结点用一个字母表示(无重复),输出时从根结点开始:每行输出若干个结点字符(相同字符的个数等于该结点长度),如果该结点有左子树就递归输出左子树;如果该结点有右子...原创 2018-06-11 20:49:56 · 2730 阅读 · 1 评论 -
查找二叉树(信息学奥赛一本通-T1367)
【题目描述】已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点。例:如图二叉树的数据文件的数据格式如下:【输入】第一行n为二叉树的结点个树,n≤100;第二行x表示要查找的结点的值;以下第一列数据是各结点的值,第二列数据是左儿子结点编号,第三列数据是右儿子结点编号。【输出】一个数即查找的结点编号。【输入样例】7155 2 312...原创 2018-06-11 20:48:32 · 4445 阅读 · 0 评论 -
对称二叉树(信息学奥赛一本通-T1368)
【题目描述】如果二叉树的左右子树的结构是对称的,即两棵子树皆为空,或者皆不空,则称该二叉树是对称的。编程判断给定的二叉树是否对称.例:如下图中的二叉树T1是对称的,T2是不对称的。二叉树用顺序结构给出,若读到#则为空,二叉树T1=ABCDE,T2=ABCD#E,如果二叉树是对称的,输出“Yes”,反之输出“No”。【输入】二叉树用顺序结构给出,若读到#则为空。【输出】...原创 2018-06-11 20:47:21 · 3017 阅读 · 0 评论 -
找树根和孩子(信息学奥赛一本通-T1336)
【题目描述】给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子。【输入】第一行:n(结点个数≤100),m(边数≤200)。以下m行:每行两个结点x和y,表示y是x的孩子(x,y≤1000)。【输出】第一行:树根:root;第二行:孩子最多的结点max;第三行:max的孩子(按编号由小到输出)。【输入样例】8 74 14 21 31 5...原创 2018-06-09 23:34:33 · 4408 阅读 · 1 评论 -
Sonya and Ice Cream(CF-1004E)
Problem DescriptionSonya likes ice cream very much. She eats it even during programming competitions. That is why the girl decided that she wants to open her own ice cream shops.Sonya lives in a ...原创 2018-08-28 16:47:52 · 389 阅读 · 0 评论 -
医院设置(信息学奥赛一本通-T1338)
【题目描述】设有一棵二叉树(如图3-8,其中圈中的数字表示结点中居民的人口,圈边上数字表示结点编号。现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻结点之间的距离为1。就本图而言,若医院建在1处,则距离和=4+12+2*20+2*40=136;若医院建在3处,则距离和=4*2+13+20+40=81…【输入】第一行一个整数n,表示树的结点数(n≤1...原创 2018-06-09 23:32:15 · 3002 阅读 · 0 评论 -
求后序遍历(信息学奥赛一本通-T1339)
【题目描述】输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。【输入】共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。【输出】一行,表示树的后序遍历序列。【输入样例】abdecdbeac【输出样例】debca【源程序】#include<iostream>#includ...原创 2018-06-09 23:29:00 · 3008 阅读 · 0 评论 -
扩展二叉树(信息学奥赛一本通-T1340)
【题目描述】由于先序、中序和后序序列中的任一个都不能唯一确定一棵二叉树,所以对二叉树做如下处理,将二叉树的空结点用·补齐,如图所示。我们把这样处理后的二叉树称为原二叉树的扩展二叉树,扩展二叉树的先序和后序序列能唯一确定其二叉树。现给出扩展二叉树的先序序列,要求输出其中序和后序序列。【输入】扩展二叉树的先序序列。【输出】输出其中序和后序序列。【输入样例】ABD....原创 2018-06-09 23:27:53 · 2364 阅读 · 0 评论 -
小球(信息学奥赛一本通-T1363)
【题目描述】许多的小球一个一个的从一棵满二叉树上掉下来组成FBT(Full Binary Tree,满二叉树),每一时间,一个正在下降的球第一个访问的是非叶子节点。然后继续下降时,或者走右子树,或者走左子树,直到访问到叶子节点。决定球运动方向的是每个节点的布尔值。最初,所有的节点都是false,当访问到一个节点时,如果这个节点是false,则这个球把它变成true,然后从左子树走,继续它的旅...原创 2018-06-09 23:24:50 · 2655 阅读 · 0 评论 -
二叉树遍历(信息学奥赛一本通-T1364)
【题目描述】树和二叉树基本上都有先序、中序、后序、按层遍历等遍历顺序,给定中序和其它一种遍历的序列就可以确定一棵二叉树的结构。假定一棵二叉树一个结点用一个字符描述,现在给出中序和按层遍历的字符串,求该树的先序遍历字符串。【输入】两行,每行是由字母组成的字符串(一行的每个字符都是唯一的),分别表示二叉树的中序遍历和按层遍历的序列。【输出】一行,表示二叉树的先序序列。【输...原创 2018-06-09 23:23:25 · 2948 阅读 · 0 评论 -
FBI树(信息学奥赛一本通-T1365)
【题目描述】我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下:T的根结点为R,其类型与串S的类型相同;若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和...原创 2018-06-09 23:22:09 · 2576 阅读 · 0 评论 -
加分二叉树(洛谷-P1040)
题目描述设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下:subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数。若某个子树为空,规定其加...原创 2018-04-18 22:52:35 · 457 阅读 · 0 评论