【概述】

无根树转有根树是指:当给出 n 个结点与 n-1 条边后,给定一个要指定的根结点的编号 root,建立以 root 为根的树。

利用 STL 中的 vector,在输入 n-1 条边后,从 root 开始进行 dfs,遍历其邻接点,递归的将其转换为子树。

【实现】

vector<int> G[N];
int father[N];
void dfs(int x,int fa){//递归的转化以x为为根的子树,x的父节点为faint n=G[x].size();//x的邻接点个数for(int i=0;i<n;i++){//遍历x的邻接点int y=G[x][i];//x的第i个邻接点yif(y!=fa)//将y的父结点设为x,递归转成y为根的子树dfs(y,father[y]=x);}
}
int main(){int n;scanf("%d",&n);for(int i=1;i<=n-1;i++){int x,y;scanf("%d%d",&x,&y);G[x].push_back(y);G[y].push_back(x);}int root;scanf("%d",&root);father[root]=-1;dfs(root,-1);for(int i=1;i<=n;i++)printf("%d\n",father[i]);return 0;
}

树形结构 —— 树与二叉树 —— 无根树转有根树相关推荐

  1. 树形结构 —— 树与二叉树

    [概述] 树是一种非线性的.递归定义的有序数据结构,能很好地描述有分支和层次特性的数据集合. 二叉树是树的一种形态,是 n 个结点的有限集合,该集合或为空集(空二叉树),或由一个根结点与两棵互不相交的 ...

  2. 树形结构—树和二叉树

    文章目录 概述 一.树的定义 二.树的基本术语 三.为什么要研究二叉树 四.二叉树和树的区别 五.二叉树的定义 六.二叉树的不同形态 小结 概述 其实,生活中树型结构有很多应用,比如:自然界中的树,人 ...

  3. 树形结构 —— 树与二叉树 —— 树的重心

    [概述] 树的重心也叫树的质心,对于一棵具有 n 个结点的无根树,找到一个点,使得将树变为以该点为根的有根树时,最大子树的结点数最小. 简单来说,就是给定一棵 n 个点的树,当删除某点 x 后,使得最 ...

  4. 树形结构 —— 树与二叉树 —— 树的直径

    [定义] 给定一棵树,树中的每条边都有一个权值. 树中两点的距离:连接两点的路径边权之和 树的直径:树中最远的两个节点之间的距离 树的最长链:连接树中最远的两个结点的路径 [实现] 树的直径通常有两种 ...

  5. 树形结构 —— 树与二叉树 —— 树的中心

    [概述] 树的中心问题是指:当给出 n 个结点与 n-1 条边后,要选定一个点作为整棵树的根结点,使得从该点到每个叶结点的最长路径最短. 树的中心问题主要有两种方法:DFS/BFS 进行搜索.树形 D ...

  6. 树形结构 —— 树与二叉树 —— 树的数据生成器

    为方便测试数据,给出一个树的数据生成器. 树的结点为 1~10 个,边权为 1~100,各点编号随机化 struct Edge {int x, y;int dis; } edge[N]; int n, ...

  7. 树形结构——树的直径

    树的直径的定义  树的直径:树上最远两点(叶子结点)的距离. 树的直径的求法 例题:[模板]树的直径 两遍暴力dfs 引理:对于树上任意一点 P P P,找到离它最远的节点 Q Q Q.在找到离节点 ...

  8. 树形结构:二叉树,分治,合并子树,递归

    我们学习树的时候,一些地方用到了递归,但是可能没意识到这里面都是分治的思想 ============================================================== ...

  9. 树形结构(1)(Java语言)——树的基本概念

    树的基本概念 前言 树形结构 树的概念 树的特点 树的其他概念(重要) 树的表现形式 树的应用 前言 前面的学习中,我们了解了顺序表,栈,队列等.这些都属于线性结构,就像一根线一样串起来,而接下来我们 ...

  10. 数据结构 | 3.树与二叉树

    在 栈和队列 一文中提到,栈可以处理具有 完全包含 关系的问题. 而树分为两部分:结点 和 边.结点可以理解为集合,边称为关系.树的根结点就叫做全集,子节点叫做子集,子集并起来就得到了全集. 根结点就 ...

最新文章

  1. SD-WAN — 应用场景
  2. libtorch Tensor cannot be used as a tuple
  3. 求职 .net程序员!
  4. C指针原理(36)-C快速入门
  5. int型数据占用的内存空间及ASCII码表
  6. 智能家居要走平民化路线
  7. 培养有见识的孩子,这6部适合孩子的纪录片,在家也能涨知识!
  8. 用Cucumber JVM编写BDD测试
  9. svg 动画_根据AI导出的SVG path制作SVG线条动画
  10. H5调用手机摄像头拍照,如何压缩后上传
  11. es6 __proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()
  12. Linux串口属性设置
  13. 台式计算机中常用的机械硬盘,台式机如何安装机械硬盘?给台式电脑安装机械硬盘的详细步骤...
  14. 橡胶支座抗压弹性模量计算公式_橡胶支座计算
  15. 推荐系统多场景联合建模经验
  16. 数据库数据修改报错The instance of entity type ‘XXX‘ cannot be tracked
  17. 【工具】-chcp用法-如何解决PowerShell中文乱码-各语言编码
  18. 默认语言及Android平台语言支持状态(印度语)Android N 设置中语言列表介绍
  19. QT小项目------>记事本
  20. 上海共享办公,创新创业空间

热门文章

  1. 华为手机流量日显示无服务器,华为手机开启了数据流量却不能上网怎么办
  2. GPIO设备虚拟文件结点的创建【转】
  3. JPA的cannot simultaneously fetch multiple bags异常的解决
  4. canvas画圆形图片
  5. 压倒eBay 挑战亚马逊 Shopify到底厉害在哪儿?
  6. mysql.sock.lock的作用_mysql.sock的作用
  7. 阿里巴巴的安全能力究竟是什么水平?
  8. SSRF利用 Gopher 协议拓展攻击面
  9. 小鑫鑫的平均分(排序问题)
  10. 计算机可移动磁盘无法显示图片,电脑不显示移动硬盘图标?两种解决办法