二叉树的遍历——洛谷P1364

news/2024/4/25 19:49:39

1. 如何构建父节点与子节点的关系

通过一个结构体,包括每一个节点的父、子节点,在读入一个节点的数据时,标记其子节点的父节点为自己

2. 代码

#include<bits/stdc++.h>
using namespace std;struct node
{int f,l,r,w;
}tr[105];int n,s,ans=0x3f3f3f3f,vis[105];void dfs(int pos,int stp)
{int fa=tr[pos].f,le=tr[pos].l,ri=tr[pos].r;s+=tr[pos].w*stp;if (fa && !vis[fa])                                // 在每一个递归前加是否进入递归的判断条件{vis[fa]=1;dfs(fa,stp+1);}if (le && !vis[le])                                // 在有多条件的情况下 比在函数内部最开头统一判断 条理更清晰{vis[le]=1;dfs(le,stp+1);}if (ri && !vis[ri]){vis[ri]=1;dfs(ri,stp+1);}
}int main()
{cin>>n;for (int i=1;i<=n;i++){cin>>tr[i].w>>tr[i].l>>tr[i].r;tr[tr[i].l].f=i;                               // 子节点的父节点为此时i值,构建与父节点的关系tr[tr[i].r].f=i;}for (int i=1;i<=n;i++){s=0;                                           // 每次循环都要保证s为0的初始值memset(vis,0,sizeof(vis));                     // 及时清零标记数组 养成好习惯vis[i]=1;dfs(i,0);ans=min(ans,s);}cout<<ans;return 0;
}


https://www.xjx100.cn/news/3366554.html

相关文章

mysql-FIND_IN_SET包含查询

如图所示&#xff0c;需要查询字段ancestorid中包含14的所有数据&#xff0c;使用FIND_IN_SET即可实现&#xff0c;不需要使用模糊查找like 示例sql&#xff1a; SELECT * FROM mt_fire_template WHERE FIND_IN_SET(14,ancestorid) 结果

[蓝桥杯 2016 省 B] 交换瓶子

题目链接 [蓝桥杯 2016 省 B] 交换瓶子 题目描述 有 N N N 个瓶子&#xff0c;编号 1 ∼ N 1∼N 1∼N&#xff0c;放在架子上。 比如有 5 5 5 个瓶子&#xff1a; 2,1,3,5,4要求每次拿起 2 2 2 个瓶子&#xff0c;交换它们的位置。 经过若干次后&#xff0c;使得瓶子的…

前后端开发之——文章分类管理

原文地址&#xff1a;前后端开发之——文章分类管理 - Pleasure的博客 下面是正文内容&#xff1a; 前言 上回书说到 文章管理系统之添加文章分类。就是通过点击“新建文章分类”按钮从而在服务端数据库中增加一个文章分类。 对于文章分类这个对象&#xff0c;增删改查属于配…

人工智能(pytorch)搭建模型25-基于pytorch搭建FPN特征金字塔网络的应用场景,模型结构介绍

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型25-基于pytorch搭建FPN特征金字塔网络的应用场景&#xff0c;模型结构介绍。特征金字塔网络&#xff08;FPN&#xff09;是一种深度学习模型结构&#xff0c;主要应用于目标检测任务中&am…

springboot基本使用八(mbatisplus+filter实现登录功能)

mybatisplus依赖&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version> </dependency> mysql依赖&#xff1a; <dependency><grou…

147.【2024Java八股-全网最全-10w字】

100道Java经典面试题 (一)、准备篇1.HR如何筛选简历?2.部门负责人如何筛选简历?3.简历模块布局4.应届生如何找到合适的练手项目?5.深入学习哪些业务模块呢?6.Java程序员的面试过程 (二)、Redis篇1.redis经常使用在哪些场景?2.Redis进行查询的流程是什么?3.什么是缓存穿透…

【Servlet】thymeleaf快速入门

文章目录 一、thymeleaf介绍二、入门案例 一、thymeleaf介绍 Thymeleaf&#xff1a;视图模板技术 在index.html页面上加载java内存中的fruitList数据&#xff0c;这个过程我们称之为渲染&#xff08;render&#xff09;。 thymeleaf是用来帮助我们做视图渲染的一个技术。 二…

C语言 | Leetcode C语言题解之第6题Z字形变换

题目&#xff1a; 题解&#xff1a; char * convert(char * s, int numRows){int n strlen(s), r numRows;if (r 1 || r > n) {return s;}int t r * 2 - 2;char * ans (char *)malloc(sizeof(char) * (n 1));int pos 0;for (int i 0; i < r; i) { // 枚举矩阵的…