7-4 二叉树的遍历!(简单) (25 分)

7-4 二叉树的遍历!(简单) (25 分)

二叉树作为FDS课程最核心的数据结构之一,要求每个人都掌握!

这是一道简单的二叉树问题!

我们将给出一颗二叉树,请你输出它的三种遍历,分别是先序遍历,中序遍历,后序遍历!

输入格式:

二叉树将以这样的形式给出:

第一行给出一个正整数N(N<=100),表示二叉树上的节点个数!

接下来N行,每行包含三个整数,i,l,r,分别代表第i个节点的左右孩子!

如果它的左/右孩子为空,则在对应位置给出-1!

题目保证1是根节点!

输出格式:

请你输出它的三种遍历!

第一行输出先序遍历,第二行输出中序遍历,第三行输出后序遍历!

每行末尾无多余空格!

输入样例:

在这里给出一组输入。例如:

3
1 2 3
2 -1 -1
3 -1 -1

输出样例:

在这里给出相应的输出。例如:

1 2 3
2 1 3
2 3 1

 思路:利用递归建树   然后 遍历  本题受刺激最大 有些人 人家 用4 行代码 就建成树了 而我用了这么多  花了好长时间  听软工老师的话感触最深  每个人都是从写垃圾码写过来的  加油 陌生人  今天 5月九号 分手了

​
#include<bits/stdc++.h>
using namespace std;
typedef int Elementyple;
typedef struct TNode* BiTree;
typedef struct TNode{Elementyple Data;struct TNode* Left;struct TNode* Right;
}tnode;
int N;
BiTree createNode() {BiTree node = new TNode;node->Left = NULL;node->Right = NULL;return node;
}
BiTree CreaTree(int number[10000][15],int x){if(x==-1)return NULL;BiTree BT;// BT=(BiTree)malloc(sizeof(struct TNode));BT=createNode();BT->Data=x;BT->Left=CreaTree(number,number[x][0]);BT->Right=CreaTree(number,number[x][1]);return BT;
}
int flag=0;
//如果每层都定义一个flag=0的话那么每次递归的时候 flag都是从0开始 无法达到flag++de 效果 
void PreorderTraversal( BiTree BT ){if(BT){flag++;if(flag==N)printf("%d",BT->Data);else printf("%d ",BT->Data);PreorderTraversal(BT->Left);PreorderTraversal(BT->Right);}
}
void InorderTraversal( BiTree BT){if(BT){InorderTraversal(BT->Left);flag++;if(flag==2*N)printf("%d",BT->Data);elseprintf("%d ",BT->Data);InorderTraversal(BT->Right);}
}
void PostorderTraversal( BiTree BT ){if(BT){PostorderTraversal(BT->Left);PostorderTraversal(BT->Right);flag++;if(flag==3*N)printf("%d",BT->Data);elseprintf("%d ",BT->Data);}
}int main(){int i,a[10000][15],b[10000];scanf("%d",&N);for(i=1;i<=N;i++){scanf("%d%d%d",&b[i],&a[i][0],&a[i][1]);}BiTree BT; BT=CreaTree(a,1);PreorderTraversal(BT);printf("\n");InorderTraversal(BT);printf("\n");PostorderTraversal(BT);}​

 下面这个码pta上 过不去 但测试多组数据没问题    但还是思路有问题  记录一下自己 努力的失败结果   

//根据输入的构建二叉树
//然后 进行先序 后序 中序的遍历
#include<bits/stdc++.h>
using namespace std;
#define Maxsize 100
typedef int Elementyple;
typedef struct TNode* BiTree;
typedef struct TNode{Elementyple Data;struct TNode* Left;struct TNode* Right;
}tnode;int N;
BiTree createNode() {BiTree node = new TNode;node->Left = NULL;node->Right = NULL;return node;
}
BiTree CreaTree(int number[],int Length){BiTree BT;int i=0;BT=createNode();//if( NULL==BT )//return NULL ;BT->Data=number[i++]; BiTree m[10],temp;int head=0,last=0;m[last++]=BT;while(head-last){temp=m[head++];if(i<Length){if(number[i]!=-1){temp->Left=createNode();temp->Left->Data=number[i];m[last++]=temp->Left;}i++;}if(i<Length){if(number[i]!=-1){temp->Right=createNode();temp->Right->Data=number[i];m[last++]=temp->Right; }i++;}}return BT;
}
int flag=0;
//如果每层都定义一个flag=0的话那么每次递归的时候 flag都是从0开始 无法达到flag++de 效果 
void PreorderTraversal( BiTree BT ){if(BT){flag++;if(flag==N)printf("%d",BT->Data);else printf("%d ",BT->Data);PreorderTraversal(BT->Left);PreorderTraversal(BT->Right);}
}
void InorderTraversal( BiTree BT){if(BT){InorderTraversal(BT->Left);flag++;if(flag==2*N)printf("%d",BT->Data);elseprintf("%d ",BT->Data);InorderTraversal(BT->Right);}
}
void PostorderTraversal( BiTree BT ){if(BT){PostorderTraversal(BT->Left);PostorderTraversal(BT->Right);flag++;if(flag==3*N)printf("%d",BT->Data);elseprintf("%d ",BT->Data);}
}int main(){queue<int>q,p;int i,a[10000][3],d[10000],j=0,k=1;scanf("%d",&N);for(i=0;i<N;i++){scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);}for(i=0;i<N-1;i++){for(j=0;j<N-1-i;j++)if(a[j][0]>a[j+1][0]){swap(a[j],a[j+1]);//表示一行的元素 }}for(i=0;i<N;i++){p.push(a[i][1]);q.push(a[i][2]);}//将两个数组元素合并为一个数组 while(!q.empty()){d[k++]=p.front();//返回队首元素 也就是出队 p.pop();//出队一个 就删除一个 d[k++]=q.front();q.pop(); }d[0]=1;BiTree BT; BT=CreaTree(d,k);PreorderTraversal(BT);printf("\n");InorderTraversal(BT);printf("\n");PostorderTraversal(BT);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[MyBatisPlus]入门案例

入门案例 创建测试数据库和表 CREATE DATABASE mybatis_plus /*!40100 DEFAULT CHARACTER SET utf8mb4 */; use mybatis_plus;CREATE TABLE user ( id bigint(20) NOT NULL COMMENT 主键ID,name varchar(30) DEFAULT NULL COMMENT 姓名, age int(11) DEFAULT NULL COMMENT 年…

vs 2019 aspx灰色_蛇纹当道,豹纹在侧:穿成动物园是2019时尚大势?

↑点击上方三联生活周刊加星标&#xff01;忘记动物纹让你联想到的隐喻吧&#xff0c;它应该用时髦来吸引你。蛇纹当道&#xff0c;豹纹在侧和有嬉皮印记的植物花纹不同&#xff0c;动物纹让人觉得老派而华丽&#xff0c;所以前者有像《佩斯利公园》这样的歌来将它比喻成没有世…

TensorFlow.NET 在工业部署中的应用

前言深度学习训练的模型 如何快速地在工业应用中进行部署&#xff0c;这一直是工业领域深度学习技术应用的痛点。我们来看下TIOBE 2020年7月 的 TOP 10 编程语言排行榜&#xff1a;从上图中可以看到&#xff0c;Python 占据了 第 3 名&#xff0c;C# 在 第 5 名。在深度学习的科…

全年营业额怎么计算_门店盈亏平衡计算及案例分析 | 商品管理

以某门店为例&#xff0c;面积为150平方米。年租金16万元、人员工资费用15万元、水电费3万元&#xff0c;税费1.2万元、装修费2.9万元、交通费1.6万元、投入成本的利息及其他费用3.3万元。(进货折扣)是50%&#xff0c;春夏季销售额占年总销售额的40%&#xff0c;一件春夏季的衣…

人工智能?.NetCore一样胜任!

提起AI&#xff0c;大家都会先想到Python&#xff0c;确实Python作为一门好几十年的老语言&#xff0c;上一波的AI大流行使它焕发了青春。大家用Phtyon来做AI&#xff0c;最主要的原因无非就是编码量更少&#xff0c;很多数学和AI相关的Api都是现成的。但是随着ML.net的问世&am…

区域转换为二值图像_Matlab图像处理系列教程(一)

小编近期为大家带来一套全面系统的MATLAB在图像处理中的应用。灰度处理 灰度化处理就是将一幅色彩图像转化为灰度图像的过程。彩色图像分为R&#xff0c;G&#xff0c;B三个分量&#xff0c;分别显示出红绿蓝等各种颜色&#xff0c;灰度化就是使彩色的R&#xff0c;G&#xff0…

7.30 KubeCon2020 | 今天下午5:40 近几年最火爆的技术峰会之分享主题.NET开发者与Kuberentes...

01最负盛名的峰会自2018 年 KubeConCloudNativeCon 首次落地中国以来&#xff0c;CNCF 每年都会在中国举办云原生技术大会。大会每年都能吸引来自五大洲 48 个国家的开源精英和技术大咖前来参会。阿里、华为、腾讯等你所知道的每一家大厂都是KubeCon的大会赞助商。滑动查看更多…

[MyBatisPlus]测试BaseMapper的功能测试自定义功能

测试BaseMapper的功能 添加功能 /*** 实现新增用户信息*/Testpublic void testInsert(){User user new User();user.setName("张三");user.setAge(23);user.setEmail("zhangsanxx.com");int result userMapper.insert(user);System.out.println("r…

[MyBatisPlus]通用Service接口测试通用Service

通用Service接口 说明: 通用 Service CRUD 封装IService接口&#xff0c;进一步封装 CRUD 采用 get 查询单行 remove 删 除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆&#xff0c;泛型 T 为任意实体对象建议如果存在自定义通用 Service 方法的可能&#x…

程序员修神之路--晦涩难懂的CAP,是否完全正确?

微信搜一搜架构师修行之路菜菜哥&#xff0c;帮忙解决一个问题是不是面试又被虐了&#xff1f;是的呢&#xff0c;这次面试官问我什么是CAP&#xff1f;这个可就说来话长了......01PARTCAP说到CAP&#xff0c;首先不能不说分布式系统&#xff0c;前面几篇也说过&#xff0c;分布…

[MyBatisPlus]雪花算法

雪花算法 背景 需要选择合适的方案去应对数据规模的增长&#xff0c;以应对逐渐增长的访问压力和数据量。 数据库的扩展方式主要包括&#xff1a;业务分库、主从复制&#xff0c;数据库分表。 数据库分表 将不同业务数据分散存储到不同的数据库服务器&#xff0c;能够支撑…

如何隐藏运行 winform 程序?

群里有个同学问了问题 如何隐藏运行 winform 程序&#xff1f;&#xff0c;提起了我的兴趣&#xff0c;玩玩呗&#xff1f;那就玩玩吧&#xff01;第一版 将一个 winform 程序隐藏执行&#xff0c;隐藏执行的方式有很多种&#xff0c;第一个 demo 就用最简单的方式&#xff0c;…

[MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic通过全局配置配置主键生成策略

常用注解 TableName 设置实体类所对应的表名 如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗&#xff1f; 我们可以通过配置文件来解决这个问题&#xff1a; TableId 将属性所对应的字段指定为主键 TableId的value属性 TableId的ty…

最小堆和最大堆的建立以及基本操作

前言&#xff1a; 堆的特性&#xff1a;用数组表示的完全二叉树。有序性&#xff1a;任一结点的关键字是其子树所有结点的最大值 (最小值) 堆的本质&#xff1a;就是一颗 完全二叉树 堆的数据存储&#xff1a; 用的是 数组 建堆时主要的操作&#xff1a;就是调整 对数组的元素…

字符串是单一字符的无序组合吗_Python学习笔记(八)组合数据类型

Python语言中最常用的组合数据类型有3大类&#xff0c; 分别是集合类型、序列类型和映射类型。集合类型是一个具体的数据类型名称&#xff0c;而序列类型和映射类型是一类数据类型的总称。集合类型是一个元素集合&#xff0c;元素之间无序&#xff0c;相同元素在 集合中唯一存在…

[MyBatisPlus]条件构造器wapper

wapper简介 QueryWrapper 组装查询条件 查询用户名包含a&#xff0c;年龄在20到30之间&#xff0c;邮箱信息不为null的用户信息 package com.xxxx.mybatisplus;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xxxx.mybatisplus.mapper.Use…

推荐:适合小白入门的Asp.Net Core 开源学习手册

前言推荐一个入门级的.NET Core开源项目&#xff0c;非常适合新手入门学习.NET Core。开源地址:https://github.com/windsting/little-aspnetcore-book。手册在线下载地址&#xff1a;https://nbarbettini.gitbooks.io/little-asp-net-core-book/content/chapters/mvc-basics/c…

从当前元素继续寻找_云漫圈 | 寻找无序数组的第k大元素

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;小灰来源&#xff1a;程序员小灰本期封面作者&#xff1a;泰勒太乐————— 第二天 —————题目是什么意思呢&#xff1f;比如给定的无序数组如下&#xff1a;如果 k6&#xff0c;也就是要寻找第6大的元素&a…

DFS和BFS总结和代码演示(详解)

1&#xff1a;BFS 广度优先搜索类似于树的层次遍历过程。它需要借助一个队列来实现。如图2-1-1所示&#xff0c;要想遍历从v0到v6的每一个顶点&#xff0c;我们可以设v0为第一层&#xff0c;v1、v2、v3为第二层&#xff0c;v4、v5为第三层&#xff0c;v6为第四层&#xff0c;再…

Kestrel的ListenAnyIP和ListenLocalhost的区别

问题在上篇文章&#xff0c;把AAStore.ProductCatalog.Api部署到docker中运行&#xff0c;输入地址访问报错如下图&#xff0c;说明外部无法访问这个url。&#xff08;当然本地开发环境测试是可以访问的&#xff09;。后来修改此处options.ListenLocalhost(8081)的代码改成opti…