当前位置: 首页 > news >正文

先序遍历、中序遍历和后序遍历【牛客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;}
http://www.gsyq.cn/news/194140.html

相关文章:

  • 支付宝消费券回收新渠道,这样变现更划算 - 京顺回收
  • 项目1-C:手写体识别系统handwriting_ocr_system的深度学习系统_数据准备
  • ysyx-南大数电实验2,3,6,7,8
  • AI 论文写作工具精选10款,助力高效复现数学建模优秀论文并优化内容
  • No.867 ‘基于西门子S7-200 PLC和组态王自动售货机五种货物‘的概述
  • 持续集成CI
  • 深度测评!研究生必备AI论文平台TOP9:开题文献综述全解析
  • 如何成为一名渗透测试专家:核心技能与职业路径
  • 开源项目分享 : Gitee热榜项目 2026-1-1 日榜
  • 8款AI论文写作辅助工具对比:智能降重与高效创作效果评测
  • 亲测好用8个AI论文软件,专科生毕业论文轻松搞定!
  • 从理论到界面:六维坐标系与三值九层立体结构的工具化路径
  • 德诺超声波焊接机怎么选购才保证品质与性价比?
  • 人工智能辅助识别价值陷阱
  • 数据目录在大数据架构中的核心作用解析
  • 8款AI论文辅助工具测评:智能降重与高效创作能力对比
  • 大小不足1M,干翻Windows!
  • 高效创作与智能降重功能:8款AI论文写作工具测评分析
  • Vue 路由的庖丁解牛
  • 比360还好用,完全免费无套路!
  • 8款AI论文写作软件评测:智能降重与高效创作功能对比
  • 数字验证(一):谈谈设计验证的成本
  • 8款AI论文写作工具横向对比:智能降重与高效创作测评
  • 一维数据缝补指南:手把手玩转9种插值姿势
  • 一键永久关闭windows自动更新,让你再也见不到烦人的自动更新了。永久禁止win10/win11系统自动更新工具
  • 8款AI论文辅助软件功能测评:智能降重与高效写作能力评估
  • 对RSA的小解密指数攻击
  • 统信UOS操作系统无“网络”选项下连接wifi
  • 2025年广东省考面试报班全攻略:十大机构排名与深度解析登科七月 - 华Sir1
  • Unity动画混合硬核指南:手写BlendTree代码