题目1104: 二叉排序树
来源:互联网 发布:安卓编程 编辑:程序博客网 时间:2024/06/06 02:48
题目描述
输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。
输入
输入第一行包括一个整数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
提示 [+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
来源
2005年华中科技大学计算机研究生保研机试真题
/********************************* * 日期:2013-3-17 * 作者:SJF0115 * 题号: 天勤 题目1104: 二叉排序树 * 来源:http://acmclub.com/problem.php?id=1104 * 结果:AC * 来源:2005年华中科技大学计算机研究生保研机试真题 * 总结: **********************************/#include<stdio.h>#include<string.h>#include<malloc.h>//二叉树结点typedef struct BiTNode{//数据int data;//左右孩子指针struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;/*x 插入的数据*/void CreateBalanceTree(BiTree &T,int x){//若当前树为空if(T == NULL){T = (BiTree)malloc(sizeof(BiTNode));T->data = x;T->lchild = NULL;T->rchild = NULL;}//如果比当前结点小,插入左子树else if(x < T->data){CreateBalanceTree(T->lchild,x);}//如果比当前结点大,插入右子树else if(x > T->data){CreateBalanceTree(T->rchild,x);}//相等不插入}//先序遍历 void PreOrder(BiTree T){ //访问根节点 printf("%d ",T->data);if(T->lchild != NULL){ //访问左子结点 PreOrder(T->lchild);}if(T->rchild != NULL){ //访问右子结点 PreOrder(T->rchild);} } //中序遍历 void InOrder(BiTree T){ if(T->lchild != NULL){ //访问左子结点 InOrder(T->lchild);}//访问根节点 printf("%d ",T->data); if(T->rchild != NULL){ //访问右子结点 InOrder(T->rchild);}} //后序遍历 void PostOrder(BiTree T){ if(T->lchild != NULL){ //访问左子结点 PostOrder(T->lchild);}if(T->rchild != NULL){ //访问右子结点 PostOrder(T->rchild);}//访问根节点 printf("%d ",T->data); } int main(){int N,x;while(scanf("%d",&N) != EOF){//注意N = 0if(N == 0){continue;}BiTree T = NULL;//创建二叉平衡树for(int i = 0;i < N;i++){scanf("%d",&x);CreateBalanceTree(T,x);}//先序遍历 PreOrder(T);printf("\n");//中序遍历InOrder(T);printf("\n");//后序遍历PostOrder(T);printf("\n");} return 0;}
注意:N = 0 的情况
- 题目1104: 二叉排序树
- (题目35)题目1201:二叉排序树
- 题目35:二叉排序树
- 题目1467:二叉排序树
- 题目1201:二叉排序树
- 题目1467:二叉排序树
- 题目1201:二叉排序树
- 题目1201:二叉排序树
- 题目1201:二叉排序树
- 题目1201:二叉排序树
- 题目1201:二叉排序树
- Jobdu 题目1201:二叉排序树
- 题目1467:二叉排序树
- 题目1201:二叉排序树
- 题目1467:二叉排序树
- 题目1201:二叉排序树
- 题目1467:二叉排序树
- 二叉排序树题目一
- xcode快捷键
- Solr Data Import配置多Entity
- Unity学习笔记1:Asset Import & Creation
- Myeclipse10下搭建SSH框架(图解)Struts2.1+Spring3.0+Hibernate3.3
- 基于stm32f103zet6的看门狗学习
- 题目1104: 二叉排序树
- 批量改名酷我mp3临时文件后缀
- 编写一个程序计算100以内的smith数,smith数的概念: 一个非素数,其各位数之和等于其所有质因数的个位数之和。 例如:4=2*2,4=2+2
- 转帖yum和apt-get用法及区别,总结的不错
- c++builder Debugger Debugger Exception Notification Access数据库有空字段错误
- SqlServer !=与<>
- C#集合详解
- Google Play开发者账号注册教程(new)
- 后缀数组实现