1738: 查找-二叉排序树
金币值:2
定数:11
时间限制:1.000 s
内存限制:128 M
正确:7
提交:10
正确率:70.00% 命题人:
题目描述
输入n个整数,从空开始建立一棵二叉排序树,每输入一个整数x,判断该数是否在该二叉排序树中,如果不在,则加入到二叉排序树中,如果在,则不加入到二叉排序树中;输入一个整数,判断该整数是否在这棵二叉排序树中,如果不在输出Not Found,否则输出该整数;中序遍历这棵二叉排序树得到一个有序的序列。
#include <stdio.h>
#include <stdlib.h>
typedef int KeyType;
typedef struct ElemType {
int key;
} ElemType;
typedef struct BiTNode {
ElemType data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
void InsertBST(BiTree &T,ElemType e);
BiTree search(BiTree T,int key);
void Inorder(BiTree T);
void create_bsttree(BiTree &bt) {
int i,n;
ElemType e;
bt=NULL;
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%d",&e.key);
InsertBST(bt,e);
}
}
void visit(ElemType e) {
printf("%d ",e.key);
}
int main(void) {
BiTree bt;
create_bsttree(bt);
int key;
scanf("%d",&key);
BiTree p=search(bt,key);
if(p==NULL) printf("Not Found");
else visit(p->data);
printf("\n");
Inorder(bt);
return 0;
}
/*仅提交以下代码*/
void InsertBST(BiTree &T,ElemType e) {
}
BiTree search(BiTree T,int key){
}
void Inorder(BiTree T) {
}
输入格式
第1行输入一个整数表示建立的二叉排序树有n个整数。
第2行输入n个整数。
第3行输入一个整数。
第2行输入n个整数。
第3行输入一个整数。
输出格式
如果找到被查找的数,则第1行输出该整数,否则输出一个字符串Not Found。
第2行输出一个中序遍历此二叉排序树得到的有序序列,格式见样例(行末有空格)
第2行输出一个中序遍历此二叉排序树得到的有序序列,格式见样例(行末有空格)
输入样例 复制
8
10 18 3 8 12 2 7 4
12
输出样例 复制
12
2 3 4 7 8 10 12 18
提示
注意:题目中要求二叉排序树中不存在关键字值相同的结点