news 2026/4/20 13:03:02

先序遍历、中序遍历和后序遍历【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
先序遍历、中序遍历和后序遍历【牛客tracker 每日一题】

先序遍历、中序遍历和后序遍历

时间限制:1秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

给定一棵包含n nn个节点的二叉树,节点编号为1 ∼ n 1∼n1n,以n − 1 n−1n1有向边( a i , b i ) (a_i,b_i)(ai,bi)形式给出,表示父节点a i a_iai指向子节点b i b_ibi

对子节点的左右关系作如下规定:

请输出该二叉树的先序中序后序遍历序列。

输入描述:

第一行输入整数n ( 1 ≦ n ≦ 10 5 ) n(1≦n≦10^5)n(1n105)
接下来n − 1 n−1n1行,每行输入两个整数a i , b i ( 1 ≦ a i , b i ≦ n ) a_i,b_i(1≦a_i,b_i≦n)ai,bi(1ai,bin),表示一条有向边a i → b i a_i→b_iaibi

输出描述:

第一行输出先序遍历序列;
第二行输出中序遍历序列;
第三行输出后序遍历序列。各行序列中的数字以单个空格分隔。

示例1

输入:

2 1 2

输出:

1 2 2 1 2 1

解题思路

首先构建二叉树结构,用数组t tt存储每个节点的左右孩子,遍历输入的n − 1 n-1n1条有向边,标记子节点v [ b ] = t r u e v[b]=truev[b]=true,按规则确定左右孩子(父节点单孩子时,子节点编号大于父节点则为左孩子,否则为右孩子;双孩子时编号较小者为左孩子);随后找到未被标记的根节点(无父节点);接着通过递归分别实现先序(根→左→右)、中序(左→根→右)、后序(左→右→根)遍历,依次输出对应序列;该方法通过数组高效存储节点的左右孩子,递归遍历适配n nn1 e 5 1e51e5的规模,先完成树的构建再按遍历规则输出,精准得到三种遍历序列,满足题目对左右孩子的定义和遍历顺序的要求。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=1e5+10;ll t[N][2];boolv[N];voidpro(ll root){cout<<root<<" ";if(t[root][0])pro(t[root][0]);if(t[root][1])pro(t[root][1]);}voidin(ll root){if(t[root][0])in(t[root][0]);cout<<root<<" ";if(t[root][1])in(t[root][1]);}voidpost(ll root){if(t[root][0])post(t[root][0]);if(t[root][1])post(t[root][1]);cout<<root<<" ";}intmain(){ll n;cin>>n;for(ll i=1;i<n;++i){ll a,b;cin>>a>>b;v[b]=true;if(t[a][0]==0&&t[a][1]==0){if(a<b)t[a][0]=b;elset[a][1]=b;}else{if(t[a][0]){if(t[a][0]<b)t[a][1]=b;else{t[a][1]=t[a][0];t[a][0]=b;}}elseif(t[a][1]){if(t[a][1]>b)t[a][0]=b;else{t[a][0]=t[a][1];t[a][1]=b;}}}}ll root=1;for(root=1;root<=n;++root){if(!v[root])break;}pro(root);cout<<endl;in(root);cout<<endl;post(root);return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 14:02:35

借助10个 AI 论文工具,精准还原数学建模论文并增强表达

在开始详细介绍之前&#xff0c;先为大家总结10个推荐AI工具的核心对比。以下表格简明扼要地对比了这些工具的主要优势、处理时间和适配平台&#xff0c;方便Java毕业论文用户快速筛选&#xff1a; 工具名称 主要用途 处理时间 适配平台 关键优势 askpaper 降AIGC率&…

作者头像 李华
网站建设 2026/4/18 11:13:15

AI 论文写作工具10种,精准还原数学建模论文并优化结构

在开始详细介绍之前&#xff0c;先为大家总结10个推荐AI工具的核心对比。以下表格简明扼要地对比了这些工具的主要优势、处理时间和适配平台&#xff0c;方便Java毕业论文用户快速筛选&#xff1a; 工具名称 主要用途 处理时间 适配平台 关键优势 askpaper 降AIGC率&…

作者头像 李华
网站建设 2026/4/19 8:56:26

强烈安利!10款AI论文写作软件测评,本科生毕业论文必备

强烈安利&#xff01;10款AI论文写作软件测评&#xff0c;本科生毕业论文必备 2025年AI论文写作工具测评&#xff1a;为什么你需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI工具辅助毕业论文写作。然而&#xff0c;面对市场上琳…

作者头像 李华
网站建设 2026/4/19 7:42:11

springboot基于JavaWeb的城市花园小区维修管理系统的设计与实现

背景与需求分析随着城市化进程加快&#xff0c;住宅小区规模扩大&#xff0c;物业管理中的维修需求日益复杂。传统纸质或Excel记录的维修管理方式效率低下&#xff0c;存在工单流转慢、响应不及时、数据统计困难等问题。城市花园小区作为典型的中大型社区&#xff0c;亟需数字化…

作者头像 李华
网站建设 2026/4/19 20:57:51

人工智能辅助识别价值陷阱

人工智能辅助识别价值陷阱 关键词:人工智能、价值陷阱、识别算法、机器学习、数据分析 摘要:本文围绕人工智能辅助识别价值陷阱展开深入探讨。首先介绍了研究的背景、目的、预期读者等内容,接着阐述了相关核心概念及联系,详细讲解了用于识别价值陷阱的核心算法原理与具体操…

作者头像 李华