题目描述

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

输入描述:

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

输出描述:

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

示例1

输入

复制

5
1 6 5 9 8

输出

复制

1 6 5 9 8
1 5 6 8 9
5 8 9 6 1 

题目表述可能不明确,这边“输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。” 的意思是,在建立搜索树的时候,就将重复的排除掉,重复的就不用插入到树里面了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>using namespace std;struct Btree
{int x;Btree *left;Btree *right;Btree(){left=NULL;right=NULL;}
};
typedef struct Btree Btree;
Btree *root;
int n;
int vis[10000];void Insert(int x,Btree *&r)
{if(r==NULL){r=new Btree;r->x=x;}else{if(x<r->x){Insert(x,r->left);}else{Insert(x,r->right);}}
}void xian(Btree* r)
{if(r==NULL){return ;}printf("%d ",r->x);xian(r->left);xian(r->right);
}void zhong(Btree* r)
{if(r==NULL){return ;}zhong(r->left);printf("%d ",r->x);zhong(r->right);
}void hou(Btree* r)
{if(r==NULL){return ;}hou(r->left);hou(r->right);printf("%d ",r->x);}int Find(int x,Btree *r)
{if(r==NULL){return 0;}else{if(r->x==x){return 1;}else{int left= Find(x,r->left);int right=Find(x,r->right);return left+right;}}
}int main()
{while(scanf("%d",&n)==1){root=NULL;for(int i=0;i<n;i++){int x;scanf("%d",&x);if(Find(x,root)==0){Insert(x,root);}}xian(root);printf("\n");zhong(root);printf("\n");hou(root);printf("\n");}return 0;
}

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

  1. python输入三个数输出最小值_python之输入一系列整数输出最大值

    在python学习中,我们经常会遇到:编写一个程序,输入若干整数或者是在一串字符中,输出最大值(数)的问题.那么在这里,我给出了几种常见的,也是几种比较常用的方法,希望能给大家的学习带来一定的帮助. ...

  2. 9.C++例2-10 输入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。

    //例2-10 输入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束. #include <iostream> using namespace std; int main() { ...

  3. 由中序后序序列求前序序列

    由中序后序序列求前序序列 我们知道如何按照三种深度优先次序来周游一棵二叉树,来得到中根序列.前根序列和后根序列.反过来,如果给定二叉树的中根序列和后根序列,或者给定中根序列和前根序列,可以重建一二叉树 ...

  4. 通过前序中序,中序后序,前序后序来构造一二叉树

    前序中序,以及中序后序可以确定唯一一颗二叉树,而前序后续是可以有多种情况,因为仅仅前序后续是无法确定根节点左右子树的问题: 首先解决通过前序和中序来构建一颗二叉树的问题: 前序=根节点+左子树+右子树 ...

  5. 二叉树的深度(前序 中序 后序 递归非递归搜素)、广度、搜索 C++

    a b c 使用 1 2 3 表示 /* 描述:二叉树的深度(前序 中序 后序 递归非递归搜素).广度.搜索 作者:jz 日期:20140819 */ #include<stdio.h> ...

  6. 序列化和反序列化二叉树 -----前序,中序,后序,层序

    目录 一.序列化和反序列化 1.什么是序列化和反序列化 二.前序遍历 1.序列化 1.问题分析 2.代码实现 2.反序列化 1.问题分析 2.代码实现 三.后序遍历 1.序列化 1.思路分析 2.代码 ...

  7. 二叉树中前序 中序 后序的互推

    最近开始复习数据结构,就从二叉树开始吧 1.复习前序 中序 后序 结构: 前序:根(左子树)(右子树) 中序:(左子树)根 (右子树) 后序:(左子树)(右子树)根 2. 前序+中序->后序 由 ...

  8. C++用类实现二叉树的创建,前序中序后序遍历(附完整代码)

    C++用类实现二叉树的创建,前序中序后序遍历(附完整代码) 前序.中序.后序遍历 直接上代码 前序.中序.后序遍历 二叉树的遍历分为前序遍历,中序遍历和后序遍历三种遍历方法.前序遍历的顺序为" ...

  9. 用前序中序创建二叉树(用中序后序创建二叉树)

    定义二叉树结点 比如就拿这个二叉树 前序中序创建 因为前序遍历的顺序是 根 , 左 ,右. 中序的遍历是 左 根 右. 我们会很不好想,但我们可以用前序和中序把上面那个二叉树的遍历一边 前序遍历:AB ...

  10. 前序中序、中序后序以及前序后序构造二叉树

    文章目录 前序中序 中序后序 前序后序 定义的树节点如下, class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { ...

最新文章

  1. php 流媒体源码,BeMusic v2.3.6 – 音乐流媒体分享平台PHP源码
  2. 软件设计师笔记---流水线
  3. Android高效编程注意事项
  4. 社交网络图中结点的“重要性“计算(Dijkstra + SPFA + Floyd + 模板)
  5. 适合海报设计的最佳字体
  6. ctfshow-WEB-web3
  7. usb 视频设备 按钮消息处理 和普通usb连接的事件处理
  8. python 判断字符串是否为数字_Python核心知识系列:数字与字符串类型
  9. phpstorm连接不上MySQL_PHPStorm无法连接到本地MySQL [重复]
  10. paip.c++ bcb string 转换操作大总结.
  11. MATLAB狼群算法求解车间生产调度问题代码实例(含甘特图)
  12. echarts画工作流(流程图)
  13. final 的三种用法是什么?
  14. 阿里云首发CIPU处理器,这次要抢CPU的C位,为OS反向自研
  15. 【产业互联网周报】外媒:英特尔等公司暂停向俄罗斯发货;阿里云季度营收195亿元;第四范式再次提交上市申请...
  16. phpStudy配置站点解决各种不能访问问题(本地可www.xx.com访问)
  17. Unity实现简单太阳系
  18. 交换机vlan配置实训心得_交换机基本配置及VLAN配置实验报告
  19. java-php-python-ssm智能导诊系统计算机毕业设计
  20. 阿里云中间件有哪些?这里最全面

热门文章

  1. 到底谁害了快播?或是服务器标准
  2. PHP-SDK实现微信付款码支付
  3. 十年磨一剑,今日把示君:架构师分享从一名码农到如今的成长经验
  4. 【面霸系列 - 3】初级java如何挖掘自身的优势
  5. (一)八卦起点作家转会纵横-------- 比较全(包括JJ,起点ceo.邪月MM的发言的发言)...
  6. JavaWeb——HTTP协议TomcatServlet学习笔记
  7. 规划计算机网络需要考虑,论计算机网络规划及实现
  8. CTF-网络信息安全攻防学习平台(脚本关)
  9. Java中判断一句英文中有多少个以p开头的单词
  10. brew upgrade出现It seems there is already an App at的解决方法