二叉树的分支结点C语言,求一棵二叉树的深度和双分支结点的个数

#includetypedef struct BiTNode

{ /*数结构*/

char data;

struct BiTNode *lchild,*rchild;

} BiTNode,*BiTree;

BiTree CreateBiTree()

{ /*递归建树*/

char ch;

BiTree T;

scanf("%c",&ch);

if(ch==' ')

T=NULL;

else

{

T=(BiTNode *)malloc(sizeof(BiTNode));/*分配存储空间*/

T->data=ch;/*生存根节点*/

T->lchild=CreateBiTree();/*构造右子树*/

T->rchild=CreateBiTree();/*构造左子树*/

}

return (T);

}

int DeepTree(BiTree T)

{ /*求深度*/

int N1,N2;

if(T==NULL)

return 0;

else

N1=DeepTree(T->rchild);/*遍历左子树*/

N2=DeepTree(T->lchild);/*遍历右子树*/

if(N1>N2)

return N1+1;

else

return N2+1;

}

int NumNode(BiTree T)

{

/*求双节点个数*/

int num1,num2;

if(T==NULL)

return 0;

num1=NumNode(T->rchild);/*遍历左子树*/

num2=NumNode(T->lchild);/*遍历右子树*/

if(T->rchild!=NULL&T->lchild!=NULL)

return (num1+num2+1);

else

return (num1+num2);

}

void main()

{

BiTree T;

int i,k;

printf("please create tree:\n");

T=CreateBiTree();

printf("\n");

i=DeepTree(T);

printf("the tree's deep is \n%d",i);

printf("\n");

k=NumNode(T);

printf("the two node is \n%d",k);

getch();

}