博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉排序树
阅读量:6237 次
发布时间:2019-06-22

本文共 1321 字,大约阅读时间需要 4 分钟。

题目描述

输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。

输入

输入第一行包括一个整数n(1<=n<=100)。接下来的一行包括n个整数。

输出

可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。每行最后一个数据之后有一个空格。

样例输入

1

2
2
8 15
4
21 10 5 39

样例输出

2

2
2
8 15
8 15
15 8
21 10 5 39
5 10 21 39
5 10 39 21

瞎搞的。。。

#include
#include
#include
#include
#include
#include
#include
#define ll long long#define INF -72340172838076674using namespace std;ll n;struct E{ ll num,lson,rson;}e[120];ll cnt=0,root=INF;ll find(ll x){ x=e[x].num; ll cur=root; while(1){ if(x
e[cur].num){ if(e[cur].rson==INF){ return cur; } else{ cur=e[cur].rson; } } else return INF; }}void Insert(ll x){ if(!cnt){ cnt++; root=x; return; } ll fat=find(x); if(fat==INF) return; cnt++; if(e[x].num>e[fat].num){ e[fat].rson=x; } else{ e[fat].lson=x; } return;}void dfs1(ll x){ if(x==INF) return; cout<
<<' '; dfs1(e[x].lson); dfs1(e[x].rson);}void dfs2(ll x){ if(x==INF) return; dfs2(e[x].lson); cout<
<<' '; dfs2(e[x].rson);}void dfs3(ll x){ if(x==INF) return; dfs3(e[x].lson); dfs3(e[x].rson); cout<
<<' ';}int main(){ while(cin>>n){ root=INF,cnt=0; memset(e,-0x2,sizeof(e)); for(int i=1;i<=n;i++){ ll x; cin>>x; e[i].num=x; Insert(i); } dfs1(root); cout<

转载于:https://www.cnblogs.com/sz-wcc/p/11071945.html

你可能感兴趣的文章
Handler类,有两个包,一个是java的,用于日志和消息,一个android,专用于消息.
查看>>
HTML5离线存储原理及实现
查看>>
BZOJ3191 [JLOI2013]卡牌游戏
查看>>
DRP 2016-...
查看>>
BZOJ 4028 分块
查看>>
vue之cli脚手架项目中组件的使用
查看>>
Django之数据聚合函数 annotate
查看>>
linux 文件系统
查看>>
回归模型与房价预测
查看>>
stream
查看>>
将一个句子中的单词逆转问题
查看>>
2015年笔记总结——技术篇
查看>>
Oracle 取两个表中数据的交集并集差异集合
查看>>
scikit-learn预处理实例之一:使用FunctionTransformer选择列
查看>>
zabbix 安装配置以及漏洞检测脚本
查看>>
【转】CentOS 6 服务器安全配置指南
查看>>
以文本方式实现Word文档报表的解决方案(三)
查看>>
【距离GDOI:137天】 扩展KMP...字符串QAQ
查看>>
P3956 棋盘
查看>>
P1278 单词游戏
查看>>