数据结构课程设计二叉排序树查找C语言代码1含测试序列文档格式.docx
《数据结构课程设计二叉排序树查找C语言代码1含测试序列文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计二叉排序树查找C语言代码1含测试序列文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
while(p!
if(p->
data・key二二item.key){break;
}
if(item.key>
p->
data.key){
p=p->
rightChiId;
else
p=p~>
leftChild;
if(p二二NULL)
num二0;
if(num~l)
for(i=0;
i<
n;
i++)
if(item,key—aLi],key)
break;
printf(/?
\nElement%dexistsina[%d]\n"
item,key,i);
}else
printf(z/\nCan,tfindnumber%d!
\n,z,item,key);
/*插入二叉树*/
intInsert(BiTreeNode**root,DataTypeitem){
BiTreeNode*current,*parent=NULL,*p;
current=*root;
while(current!
if(current一〉data・key二二item・key)return0;
parent二current;
if(current->
data・key<
item.key)current二current一〉rightChiId;
elsecurrent二current->
leftChiId;
p=(BiTreeNode*)malloc(sizeof(BiTreeNode));
printf(,zLackofspace!
"
);
exit(l);
data=item;
leftChild二NULL;
rightChild=NULL;
if(parent二二NULL)*root=p;
elseif(item.key<
parent->
data・key)parent->
leftChild=p;
elseparent->
rightChi1d=p;
return1;
/*插入数组*/
voidInsertN()
printf("
Pleaseentersomeinteger:
\nz,);
20;
scanf(,/%d,/,&
a[i]);
if(a[i].key=-l)/*判断是否非数字*/
n=i;
elseif(a[il.key<
=0)
printf(z/Numbermust>
0.\n"
i—;
if(i=19)n二20;
printf(,z\nThenumberyouenteredare:
\n,z):
%d"
,&
[i]);
Insert(&
root,aLi]);
}
printfC\n"
/*中序遍历*/
voidInTraverse(BiTreeNode*root){
if(root==NULL)return;
辻(root->
leftChiId!
二NULL)
InTraverse(root->
leftChild);
printf(z/%d"
root->
data・key);
if(root->
rightChiId!
rightChiId);
/*删除*//*DataTypeitem*/
voidDestroy()
/*BiTreeNode**root:
辻((*root)!
=NULL&
&
(*root)->
leftChild!
Destroy(&
leftCh订d);
if((*root)!
(*root)-
MightChiId!
rightChiId);
free(*root);
*/printf(^Destoryhasbeenfinished!
z/);
/*打印二叉树*/
voidPrintBiTree(BiTreeNode*bt,intn){
if(bt二二NULL)return;
PrintBiTree(bt->
rightChild,n+1);
for(i二0;
i++)printfC”);
if(n>
二0)
printfC”);
printf("
%d\n"
bt->
data);
leftChiId,n+1);
/*主函数*/
voidmain()
intd,t二0;
do
\n"
printfC1.Insert"
/*y第二次插入的重复数字没有被记录,记录了新
的数字,相同数值被忽略*/
printfC2.Search'
ll"
printf(,z3.Destroy'
n"
printfC4.Print\nz,);
printfC5.InTraverse'
/*y*/
printfC6.Exit!
\n\nz/);
Inputcommandnumber:
scanf("
%d"
&
d);
switch(d)
case1:
InsertNO;
break;
case2:
printfC\nSearchnumber:
\n,z):
scanf&
item・key);
Search(root,item);
case3:
/*判断是否存在该数值*/
'
Destroynumber:
\nz/);
scanf(,z%d,z,&
item.key);
Search(root,item);
if(num==0)
printf('
Destroycouldnotbedone・\n"
Destroy();
case4:
PrintBiTree(root,0):
case5:
InTraverse(root):
case6:
t=l:
default:
printf("
Thenumbershouldbetween1and6.\n"
}while(!
t);
测试序列二义排疗;
树查找
1・Insert
2.Search
3.Destroy
4.Print
3.InTraverse
6.Exit!
Pleaseentersomeinteger:
10
50
32
5
76
9
40
88
-1
Thenumberyouenteredare:
10503257694088
5.InTraverse
6.Exit!
4
——88
76
50
一一一10
5
1.Insert
2
Searchnumber:
9
Element9existsina[5J
1
120
6
1206
1.
Insert
2.
Search
3.
Destroy
4.
Print
5.
InTraverse
6.
Exit!
4
——120
——40
——32
一―10
一0
569103240507688120