1411 自己排序的二叉树
来源:互联网 发布:php 获取上传图片类型 编辑:程序博客网 时间:2024/06/17 13:54
经过前两周的练习,你的自己写的排序二叉树的应该至少能够支持如下操作:
CreateBTree(T []); //从某种类型的数组建立一棵排序二叉树,这种类型的值可比较大小
Travel(); //中序遍历这棵排序二叉树。
Insert(T); //插入一个数据T
现在需要你写一个Delete(T)函数,删除这棵排序二叉树中值为T的结点,如果有多个值,只删除一个,删除后仍保持排序二叉树的性质。(注意,不是删除以T为节点的子树,而是只删除这个值)
现在我们帮你做单元测试,以便了解你自己写的二叉排序树在逻辑上是否正确。
首先,我们会给出一个int 数组,你需要根据这个int 数组建立一棵二叉排序树,下面我们会给出N条指令,指令只有两种Insert x, Delete x. Insert x 指令需要你将x插入到建好的二叉排序树中,Delete x指令需要你将值为x的结点删除(只删除一个,而且不保证x一定在二叉排序树中),注意本题查代码(7)
- 输入
第一行为测试数据的组数n, 下面有n组测试数据。对于每组测试数据,第一行为用逗号隔开的int数列,你需要用这个数据初始化一棵排序二叉树,下面一行为指令数m, 格式按照题目描述。数据均为int型。
- 输出
输出一共有n行,对应每组测试数据,在所有的指令都执行完后,把当前的排序二叉树中序输出,元素之间用空格隔开。
- 样例输入
1
1,3,5,2
2
Insert 4
Delete 5
- 样例输出
1,2,3,4
此题用数组可以模拟
#include <stdio.h>#include <string.h>char s[1000];main(){int number;int length,i,j;int p;int a[1000];int up;int temp;int count;char op;scanf("%d",&number);getchar();while(number--){up=0;gets(s);length=strlen(s);i=0;p=0;for(i=0;i<length;i++){if(s[i]!=','){p=0;while(s[i] >= '0' && s[i] <= '9'&&i<length){p = p * 10 + s[i] - '0';i++;}a[up++]=p;}elsecontinue;}scanf("%d",&count);while(count--){getchar();scanf("%c",&op);if(op=='I'){for(i=0;i<6;i++)scanf("%c",&op);scanf("%d",&temp);a[up++]=temp;}if(op=='D'){for(i=0;i<6;i++)scanf("%c",&op);scanf("%d",&temp);for(j=0;j<up;j++){if(a[j]==temp){for(p=j;p<up-1;p++)a[p]=a[p+1];up--;}}}}for(i=0;i<up;i++)for(j=i+1;j<up;j++){if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}for(i=0;i<up-1;i++)printf("%d,",a[i]);printf("%d\n",a[up-1]);}}
- 1411 自己排序的二叉树
- 自己实现的二叉树
- 排序二叉树的实现
- 二叉树排序的正解
- 二叉树排序的插入
- 排序二叉树的形成
- 二叉树的层排序
- 二叉查找树(自己写的版本)
- 自己实现二叉树
- 【二叉树】二叉树排序树的判断、插入
- 二叉树-排序二叉树的简单实现
- 二叉树的创建、遍历、排序二叉树、多叉树创建
- 二叉树,排序二叉树
- 二叉树排序树的基本操作
- 排序二叉树的基本操作
- 排序二叉树的插入和删除
- 一个简单的二叉树排序算法
- 【随笔】排序二叉树的删除问题
- Spring学习笔记(14)----使用Spring的注解方式实现AOP
- Linux中__init、__devinit等初始化宏
- 三维隐函数作图器介绍
- 关于java的hashCode方法 .
- ESET nod32
- 1411 自己排序的二叉树
- 为函数指定所有者
- 1412 二叉树的繁茂度
- Spring学习笔记(15)----使用Spring注解方式管理事务
- 1417 遍历转换
- Spring学习笔记(16)----使用Spring配置文件实现事务管理
- 或许过了这段时间就没事了
- 1418 动态顺序统计量
- poj3302