层次遍历二叉树(相同类型的结构体可以直接赋值)

来源:互联网 发布:澳门网络博客骗局 编辑:程序博客网 时间:2024/06/14 15:58
#include <stdlib.h>#include <stdio.h>#define LEN sizeof(struct student)typedef struct student *stud;struct student{    int score;    stud left;    stud right;};stud create(){    stud p;    int score;    printf("请输入成绩,0结束:");    scanf("%d",&score);    if(score==0)    {        p=NULL;    }    else{        p=(stud)malloc(LEN);        p->score=score;        //p->left=p->right=NULL;        printf("左结点:\n");        p->left=create();        printf("右结点:\n");        p->right=create();    }    return p;}static stud *s;static int N;void STACKinit(int maxN){    s=(stud *)malloc(maxN*sizeof(LEN));    N=0;}int STACKempty(){    return N==0;}void STACKpush(stud p){    s[N++]=p;}stud STACKpop(){    return s[--N];}void traverse(stud p,void (*visit)(stud)){    STACKinit(20);    STACKpush(p);    while(!STACKempty()){        (*visit)(p=STACKpop());        if(p->right!=NULL)            STACKpush(p->right);        if(p->left!=NULL)            STACKpush(p->left);    }}void print(stud p){    printf("%d\t",p->score);}int main(){    stud p=create();    traverse(p,print);    return 0;}

原创粉丝点击