永发信息网

C语言中序遍历问题 遍历出现些笑脸,心

答案:1  悬赏:50  手机版
解决时间 2021-07-18 18:58

#include <stdio.h>

#include <stdlib.h>

typedef int InfoType;

typedef int KeyType;

typedef struct node

{

KeyType key;

struct node *lchild,*rchild;

}BSTNode;

typedef BSTNode *BSTree;

void main()

{

void InsertBST(BSTree *Tptr,KeyType key);

BSTree CreateBST(void);

void Inorder(BSTree T);

void DelBSTNode(BSTree *Tptr,KeyType key);

BSTNode *SearchBST(BSTree T,KeyType key);

BSTree T;

BSTNode *p;

int key;

printf("qingshuruguanjianzi(shuru0weijieshu) \n");

T=CreateBST();

printf("\n");

Inorder(T);

printf("\n");

printf("qingshuruyucharuguanjianzi:");

scanf("%d",&key);

InsertBST(&T,key);

printf("\n");

printf("qingshuruyushanchuguanjianzi:");

scanf("%d",&key);

DelBSTNode(&T,key);

printf("\n");

printf("qingshuruyuchazhaoguanjianzi:");

scanf("%d",&key);

p=SearchBST(T,key);

if(p==NULL)

printf("meiyouzhaodao%d!\n",key);

else

printf("zhaodao%d!\n",key);

printf("\n");

getch(0);

}

void InsertBST(BSTree *Tptr,KeyType key)

{

BSTNode *f,*p=*Tptr;

while(p)

{

if(p->key==key) return;

f=p;

p=(key<p->key)? p->lchild:p->rchild;

}

p=(BSTNode * )malloc(sizeof(BSTNode));

p->key=key;p->lchild=p->rchild=NULL;

if(*Tptr==NULL)

*Tptr=p;

else

if(key<f->key)

f->lchild=p;

else f->rchild=p;

}

BSTree CreateBST(void)

{

BSTree T=NULL;

KeyType key;

scanf("%d",&key);

while(key)

{

InsertBST(&T,key);

scanf("%d",&key);

}

return T;

}

void DelBSTNode(BSTree *Tptr,KeyType key)

{

BSTNode *parent=NULL,*p=*Tptr,*q,*child;

while(p){

if(p->key==key)break;

parent=p;

p=(key<p->key)? p->lchild:p->rchild;

}

if(!p)return;

q=p;

if(q->lchild&&q->rchild)

for(parent=q,p=q->lchild;p->rchild;parent=p,p=p->lchild);

child=(p->lchild)?p->lchild:p->rchild;

if(!parent)

*Tptr=child;

else

{if(p==parent->lchild)

parent->lchild=child;

else parent->rchild=child;

if(q!=p)

q->key=p->key;

}

free(p);

}

BSTNode *SearchBST(BSTree T,KeyType key)

{

if(T==NULL||key==T->key)

return T;

if(key<T->key)

return SearchBST(T->lchild,key);

else

return SearchBST(T->rchild,key);

}

void Inorder(BSTree T)

{

if(T)

{

Inorder(T->lchild);

printf("%c",T->key);

Inorder(T->rchild);

}}


最佳答案

void Inorder(BSTree T)


{


if(T)


{


Inorder(T->lchild);



//printf("%c",T->key); //这里


//改成这样:直接以int输出


printf( "%d", T->key);


// 或者这样:以字符输出,必须加上字符的'0'

//printf("%c",T->key + '0');


Inorder(T->rchild);



}}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
只有眼泪才不会骗自己对吗
DNF是练剑魂好还是狂战好?
谁都对出这幅对联!
填写首尾相接的成语,精精,贼贼,为为,神神,举
穿越火线图标升到2级要什么条件啊
如何解释腹足类身体不对称的现象
谁知道QQ飞车上除了W喷和双喷还有什么喷??
戒指是可以随便是带的吗?
照片的横幅这么搞掉?
你会用不同的QQ号去加同一个人吗?
为什么QQ申诉不成功呢?
对联:半轮淡月照诗魂
男人想娶一怎样的女人?
QQ为什么会限制登陆?
防暑的搞笑诗句,天气热,给喜欢的女孩子说的
推荐资讯
国外银行转账都支持什么银行?
玉兰油补水合适21岁使用吗?
衣服上有苍蝇屎、要用什么才能洗掉
请设计师帮忙设计装修大约要多少钱?
为了脸上的豆印好烦恼
煤老板现在的生活状况
it makes sense that 是什么从句
一个两位数的数字之间和是9,若每个数字加2,
我的宝宝是个女孩子2008年11月23日(农历十月
我不知道该说什么,但我很想知道你的所想,所以
以前星空卫视播放的一部动画片男主角拿一个武
把生活中令你感动的一件下事写下来,字数200
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?