假如要改写程序是按中根顺序和后根顺序完成统计应作哪些修改?
#include "stdio.h"
#define MAX 100
typedef struct treenode{
char info;
struct treenode *llink, *rlink;
} TREENODE;
TREENODE *creat_tree()
{ TREENODE *setup();
TREENODE *root;
char str[MAX];
printf("Input the string:");
gets(str);
root=setup(str);
return(root);
}
int i=0;
TREENODE *setup(str)
char str[];
{
TREENODE *ptr;
if(str[i]=='') return(NULL);
if(str[i]!='0'){
ptr=(TREENODE *)malloc(sizeof(TREENODE));
ptr->info=str[i];
i ;
ptr->llink=setup(str);
i ;
ptr->rlink=setup(str);
return(ptr);
}else{
i ;
return(NULL);
}
}
int count=0;
count_leaf(ptr)
TREENODE *ptr;
{
if(ptr==NULL) return;
if(ptr->llink == NULL && ptr->rlink == NULL) count ;
if(ptr->llink != NULL) count_leaf(ptr->llink);
if(ptr->rlink != NULL) count_leaf(ptr->rlink);
}
main()
{
TREENODE *root;
root=creat_tree();
count_leaf(root);
printf("Number of leaf in the binary tree is %d\n",count);
}
饭饭告诉你:count_leaf(ptr)
TREENODE *ptr;
{
if(ptr==NULL) return;
if(ptr-