Calculating the number of complete program a binary single node branch

#include <stdio.h>

typedef struct BTNode
{
    char data;
    struct BTNode * lchild; //p是指针L是左,child是孩子
    struct BTNode * rchild;
}BTNode,*BiTree;

struct BTNode * CreateBTree();
void PreTraverseBTree(struct BTNode *);
int DsonNodes(struct BTNode *);

int main()
{
    int t;
    struct BTNode * T = CreateBTree();
    PreTraverseBTree(T);
    printf(" \ N- " ); 
    T = DsonNodes (T); 
    the printf ( " % D " , T); 


    return  0 ; 
} 
void PreTraverseBTree (BiTree T) 
{ 
    IF ! (T = NULL)   // IF must have, while pT exists, but pT-> pLchild or pT-> pRchild is not empty, the empty data field does not point to 
    { 
        the printf ( " % C \ n- " , T-> data);
         IF (! T-> lchild = NULL) 
            PreTraverseBTree (T -> lchild);
         IF (T-> rchild) 
            PreTraverseBTree (T ->rchild);
    }
}
int DsonNodes(BiTree T)
{
    if(T!=NULL)
    {
        if((T->lchild==NULL&&T->rchild!=NULL)||(T->lchild!=NULL&&T->rchild==NULL))
            return DsonNodes(T->lchild)+DsonNodes(T->rchild)+1;
        else
            return DsonNodes(T->lchild)+DsonNodes(T->rchild);
    }
}


struct BTNode * CreateBTree()
{
     struct BTNode * pA = (struct BTNode *)malloc(sizeof(struct BTNode));
     struct BTNode * pB = (struct BTNode *)malloc(sizeof(struct BTNode));
     struct BTNode * pC = (struct BTNode *)malloc(sizeof(struct BTNode));
     struct BTNode * pD = (struct BTNode *)malloc(sizeof(struct BTNode));
     struct BTNode * pE = (struct BTNode *)malloc(sizeof(struct BTNode));

     pA->data = 'A';
     pB->data = 'B';
     pC->data = 'C';
     pD->data = 'D';
     pE->data = 'E';

     pA->lchild = pB;
     pA->rchild = pC;
     pB->lchild = pB->rchild =NULL;
     pC->lchild = pD;
     pC->rchild = NULL;
     pD->rchild = pE;
     pD->lchild = NULL;
     pE->lchild = pE->rchild = NULL;

     return pA;
}

 

Guess you like

Origin www.cnblogs.com/spore/p/11329264.html