分享
 
 
 

求出一个排序二叉树中结点度数为一的结点个数

王朝other·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

#include<stdio.h>

#include<iostream.h>

#include<conio.h>

#include<malloc.h>

#include<stdlib.h>

#define ERROR 0

#define STACK_INIT_SIZE 100

#define OVERFLOW -1

#define FALSE 0

#define TRUE 1

#define OK 1

int i=0;

struct tree{

char data;

struct tree *Lchild,*Rchild;

};

typedef struct tree SElemType;

typedef int Status ;

struct STACK

{

SElemType *base;

SElemType *top;

int stacksize;

};

typedef struct STACK *pSqstack;

typedef struct STACK SqStack;

Status InitStack(SqStack **S)

{

(*S)=(SqStack *)malloc(sizeof(SqStack));

(*S)->base=(SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));

if(!(*S)->base) exit (OVERFLOW);

(*S)->top=(*S)->base;

(*S)->stacksize=STACK_INIT_SIZE;

return OK;

}

Status StackEmpty(SqStack S)

{

if(S.top==S.base) return TRUE;

else

return FALSE;

}

Status Push(SqStack *S,SElemType e)

{

*(S->top++)=e;

return OK;

}

Status Pop(SqStack *S,SElemType *e)

{

if(S->top==S->base) return ERROR;

e=--S->top;

return OK;

}

void Visite(struct tree *t)

{

if(t) printf("%c",t->data);

}

struct tree *create_btree(struct tree *t,struct tree *r,char data)//创建二叉树

{

if (r ==0 )

{

r=new (struct tree);

if ( r == 0)

{

printf("Out of memory\n"); return 0 ;

}

r->Lchild= 0; r->Rchild=0; r->data=data;

if (t)

{

if(data<t->data) t->Lchild=r;

else

t->Rchild=r;

}

else

{

r->Rchild=0; r->Lchild = 0;

}

return r;

}

if(data<r->data)

create_btree(r,r->Lchild,data);

else

create_btree(r,r->Rchild,data);

return t;

}

void PreOrderUnrec(struct tree *t,SqStack *s)//前序遍历二叉树

{

InitStack(&s);

struct tree *p,*q;

p=t;

while (p!=0||!StackEmpty(*s))

{

while (p!=0) //遍历左子树

{

Visite(p);

if((p->Lchild==0||p->Rchild==0)&&(p->Lchild!=p->Rchild))

{printf(" o ");

i++;};

Push(s,*p);

p=p->Lchild;

};//endwhile

while (!StackEmpty(*s)) //通过下一次循环中的内嵌while实现右子树遍历

{

Pop(s,p);

q=s->top;

//Pop(s,p);

p=q->Rchild;

Visite(p);

printf("?");

};//endif

};//endwhile

}//PreOrderUnrec

void main()

{

char s[100], e;

SqStack *Sa;

struct tree *t=0;

printf("Input a letter for Creating the Binary_Tree ( Directly press <Enter> to stop ):\n");

while (*s){

printf("\nInput a letter: ");

e=getch(); /*#include<conio.h>*/

putch(e); /*#include<conio.h>*/

if(e==13) break;

if (!t)

t=create_btree(t,t,e);

else

create_btree(t,t,e);

};

printf("\n");

PreOrderUnrec(t,Sa);

printf("度数为一的结点数为:%d",i);

printf("结束请按q!");

if(getchar()=='q') printf("再见");

else {while(1);};

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有