程序运行不出来,
#include"stdio.h"#include"malloc.h"
typedef char elemtype;
typedef struct BiTNode
{
elemtype data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int createBiTree(BiTree T) {
char ch;
scanf(&ch);
if (ch=='#') T = NULL;
else{
T=(struct BiTNode *)malloc(sizeof(struct BiTNode));
T->data = ch; // Éú³É¸ù½áµã
createBiTree(T->lchild); // ¹¹Ôì×ó×ÓÊ÷
createBiTree(T->rchild); // ¹¹ÔìÓÒ×ÓÊ÷
}
return 1;} // CreateBiTree
int count=0;
int countPreorder (BiTree T)
{ // ÏÈÐò±éÀú¶þ²æÊ÷
if (T) {
count++;
// ·ÃÎʽáµã
countPreorder(T->lchild); // ±éÀú×ó×ÓÊ÷
countPreorder(T->rchild); // ±éÀúÓÒ×ÓÊ÷
}
return count;
}
int Preorder (BiTree T,elemtype x)
{ // ÏÈÐò±éÀú¶þ²æÊ÷
if (T) {
if(T->data==x)
printf("%c",T->data);
// ·ÃÎʽáµã
Preorder(T->lchild,x); // ±éÀú×ó×ÓÊ÷
Preorder(T->rchild,x); // ±éÀúÓÒ×ÓÊ÷
}
return 1;
}
int yeziPreorder (BiTree T)
{ // ÏÈÐò±éÀú¶þ²æÊ÷
int n=0;
if (T) {
if(!T->lchild&&!T->rchild)
// ·ÃÎʽáµã
{ count++;
yeziPreorder(T->lchild); // ±éÀú×ó×ÓÊ÷
yeziPreorder(T->rchild); // ±éÀúÓÒ×ÓÊ÷
}
}
return n;
}
int depth(BiTree T)
{
int ldepth,rdepth;
ldepth=depth(T->lchild);
rdepth=depth(T->rchild);
return (ldepth>rdepth?ldepth+1:rdepth+1);
}
int main()
{
BiTree T;
createBiTree(T);
int t1=countPreorder (T);
printf("%d",t1);
Preorder (T,'A');
int t2=yeziPreorder (T);
printf("%d",t2);
int t3=depth(T);
printf("%d",t3);
return 0;
}