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 名。在深度学习的科…

数据结构 快速排序(详解)

快速排序 1&#xff1a;快速排序的思想 快速排序运用了分治的思想&#xff0c;即通过一趟排序 将序列分为两部分&#xff0c;根据选取的基准&#xff0c; 将比基准小的数放在基准前面&#xff0c;将比基准大的数放在的数放在基准后面&#xff1b;然后对两部分进行递归处理&…

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

以某门店为例&#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…

创建链表小细节(引用传递和值传递以及链表中的LinkList L、LinkList *L、LinkList L)

函数参数传递的两种方式为值传递和引用传递 目录 函数参数传递的两种方式为值传递和引用传递 1.传值方式传参 2.引用方式传参 3.通过一段代码运行进一步理解传指针(包括二级指针)和传指针的引用 4.总结 1.传值方式传参 c语言是按值传递的&#xff0c;在函数中被传递的参…

区域转换为二值图像_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…

利用数组模拟队列和栈(详解)

利用数组模拟队列和栈 目录 利用数组模拟队列和栈 1&#xff1a;使用要领 2:具体代码 3&#xff1a;C栈和队列的链接 1&#xff1a;使用要领 在C语言中如果要用到了队列和栈 但又不想 写队列和栈的方法 &#xff0c;可已使用数组模拟队列和栈&#xff1b;但如果使用C便可以…

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

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

windows 禁用ipv6服务_在 Windows 7 中禁用IPv6协议/IPv6隧道

How to disable certain Internet Protocol version 6 (IPv6) components in Windows Vista, Windows 7 and Windows Server 2008http://support.microsoft.com/kb/929852/HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\双击 DisabledComponents 来…

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

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

7-4 是否同一棵二叉搜索树 (25 分)

是否同一棵二叉搜索树 1.题目描述&#xff1a; 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而&#xff0c;一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树&#xff0c;都得到一样的结果。于是对…

[MyBatisPlus]雪花算法

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

pip 设置超时时间_Python pip使用超时问题解决方案

引言之前有位群友在群里发了个问题&#xff0c;说使用pip安装第三方包遇到"Read timeout"。我相信很多时候&#xff0c;大家在使用pip都会遇到这个问题&#xff0c;所以&#xff0c;我想有必要写一遍文章来总结一下。具体如下&#xff1a;解决方案在这之前&#xff0…

如何隐藏运行 winform 程序?

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

vector的基本用法 (详解 + 代码演示)

前言&#xff1a; vector 是向量类型&#xff0c;它可以容纳许多类型的数据&#xff0c;如若干个整数&#xff0c;所以称其为容器。vector 是C STL的一个重要成员&#xff0c;使用它时需要包含头文件&#xff1a;#include; 一、vector 的初始化&#xff1a;可以有五种方式,举…

python定义一个_Python,包括定义一个类

我有一个我要解决的问题&#xff1a;编写一个包含以下内容的类contentResult的定义&#xff1a;•String类型的实例变量winner&#xff0c;初始化为空字符串。在•String类型的实例变量second_place&#xff0c;初始化为空字符串。在•字符串类型的第三位实例变量&#xff0c;初…