作者在 2010-05-12 21:33:37 发布以下内容
#include<stdio.h>
#include<stdlib.h>
int leafcount=0;
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int CreateBiTree(BiTree *T)/*根据先序序列建立二叉树的二叉链表*/
{ char ch;
scanf("%c",&ch);
if(ch=='-')
{
*T=NULL;
}
else{
if(!(*T=(BiTree)malloc(sizeof(BiTNode)))) return 0;
(*T)->data=ch;
CreateBiTree(&((*T)->lchild));
CreateBiTree(&((*T)->rchild));
}
return 1;
}
int preOrder(BiTree T)/*先序遍历的递归算法*/
{
if(T){
printf("%c ",T->data);
if (!T->lchild&&!T->rchild) leafcount+=1;
preOrder(T->lchild);
preOrder(T->rchild);
}
return 1;
}
int inOrder(BiTree T)/*中序遍历的递归算法*/
{
if(T){
inOrder(T->lchild);
printf("%c ",T->data);
inOrder(T->rchild);
}
return 1;
}
int oldOrder(BiTree T)/*后序遍历的递归算法*/
{
if(T){
oldOrder(T->lchild);
oldOrder(T->rchild);
printf("%c ",T->data);
}
return 1;
}
void main()
{ BiTree T;
leafcount=0;
printf("please enter abc--de-g--f---\n");
CreateBiTree(&T);
printf("xian xu bian li:");
preOrder(T);
printf("\nzhong xu bian li:");
inOrder(T);
printf("\nhou xu bian li:");
oldOrder(T);
printf("\nye zi jie dian:%d \n",leafcount);
system("pause");
}
#include<stdlib.h>
int leafcount=0;
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int CreateBiTree(BiTree *T)/*根据先序序列建立二叉树的二叉链表*/
{ char ch;
scanf("%c",&ch);
if(ch=='-')
{
*T=NULL;
}
else{
if(!(*T=(BiTree)malloc(sizeof(BiTNode)))) return 0;
(*T)->data=ch;
CreateBiTree(&((*T)->lchild));
CreateBiTree(&((*T)->rchild));
}
return 1;
}
int preOrder(BiTree T)/*先序遍历的递归算法*/
{
if(T){
printf("%c ",T->data);
if (!T->lchild&&!T->rchild) leafcount+=1;
preOrder(T->lchild);
preOrder(T->rchild);
}
return 1;
}
int inOrder(BiTree T)/*中序遍历的递归算法*/
{
if(T){
inOrder(T->lchild);
printf("%c ",T->data);
inOrder(T->rchild);
}
return 1;
}
int oldOrder(BiTree T)/*后序遍历的递归算法*/
{
if(T){
oldOrder(T->lchild);
oldOrder(T->rchild);
printf("%c ",T->data);
}
return 1;
}
void main()
{ BiTree T;
leafcount=0;
printf("please enter abc--de-g--f---\n");
CreateBiTree(&T);
printf("xian xu bian li:");
preOrder(T);
printf("\nzhong xu bian li:");
inOrder(T);
printf("\nhou xu bian li:");
oldOrder(T);
printf("\nye zi jie dian:%d \n",leafcount);
system("pause");
}