二叉树的遍历——洛谷P1364

news/2024/7/20 23:10:54 标签: 深度优先, 算法, 图论

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;
}


http://www.niftyadmin.cn/n/5468125.html

相关文章

h5 笔记1

Internet是InternationalNetwork的缩写&#xff0c;又称“因特网”。它是将全世界数以千计的上网设备通过TCP/IP通信协议连接在一起。Internet上的服务众多&#xff0c;主要的服务有WWW(万维网)、E-Mail(电子邮件)、FTP(FileTransferProtocol&#xff0c;文件传输协议)、Telnet…

文献分享:《Clinical metagenomics》

摘要|临床宏基因组下一代测序&#xff08;mNGS&#xff09;是对患者样本中微生物和宿主遗传物质&#xff08;DNA和RNA&#xff09;的综合分析&#xff0c;目前正迅速从研究向临床实验室发展。这种新兴的方法正在改变医生诊断和治疗传染病的方式&#xff0c;其应用涉及广泛的领域…

基于STC12C5A60S2系列1T 8051单片机的带字库液晶显示器LCD12864数据传输并行模式显示常规字符应用

基于STC12C5A60S2系列1T 8051单片机的带字库液晶显示器LCD12864数据传输并行模式显示常规字符应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示器LCD12864简…

Vue3:Pinia简介及环境搭建

一、简介 Pinia是Vue3中的状态管理工具&#xff0c;类似与Vue2中的Vuex框架的作用 二、环境搭建 1、安装 npm install pinia2、配置 main.ts import {createApp} from vue import App from ./App.vue // 第一步&#xff1a;引入pinia import {createPinia} from piniacons…

(译) 理解 Elixir 中的宏 Macro, 第四部分:深入化

Elixir Macros 系列文章译文 [1] (译) Understanding Elixir Macros, Part 1 Basics[2] (译) Understanding Elixir Macros, Part 2 - Macro Theory[3] (译) Understanding Elixir Macros, Part 3 - Getting into the AST[4] (译) Understanding Elixir Macros, Part 4 - Divin…

iOS网络抓包工具全解析

摘要 本文将深入探讨iOS平台上常用的网络抓包工具&#xff0c;包括Charles、克魔助手、Thor和Http Catcher&#xff0c;以及通过SSH连接进行抓包的方法。此外&#xff0c;还介绍了克魔开发助手作为iOS应用开发的辅助工具&#xff0c;提供的全方面性能监控和调试功能。 在iOS应…

P1102 A-B 数对 (非二分,不开龙永远的痛,用map解决)

可是我真的会伤心 题目链接 思路&#xff1a;1.本来想的是暴力&#xff0c;两层循环模拟每个数。 2.后来想先把每个数字的个数求出来放在数组nums【】中&#xff0c;并把不重复的数字存到数组b&#xff0c;再两层循环b数组应该时间复杂度会好些&#xff0c;如果b数组中的两个数…

STC8H8K64U 学习笔记 - 矩阵键盘

这里写自定义目录标题 环境说明引脚说明 矩阵键盘 环境说明 该内容仅针对我自己学习的开发板做的笔记&#xff0c;在实际开发中需要针对目标电路板的原理图进行针对性研究。 芯片&#xff1a;STC8H8K64U烧录软件&#xff1a;stc-isp-v6.92G编码工具&#xff1a;天问 引脚说明 …