이 진 트 리 생 성, 세 가지 옮 겨 다 니 기, 잎 노드 수

3929 단어 데이터 구조
이 진 트 리 작업 을 했 는데 귀 찮 으 면 재 귀적 으로............................................................................

#include 
#include


typedef struct BiTNode
{
    char  data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

BiTree Create(BiTree T)
{
    char ch;
    ch=getchar();
    if (ch=='#') {
        T=NULL;
    }
    else
    {
        if(!(T=(BiTree)malloc(sizeof(BiTNode))))
            printf("ERROR!
"
); T->data=ch; T->lchild= Create(T->lchild); T->rchild= Create(T->rchild); } return T; } void InOrderTraverseX(BiTree T)// { if (T) { if (T->data!='#') { printf("%c",T->data); } InOrderTraverseX(T->lchild); InOrderTraverseX(T->rchild); } } void InOrderTraverseZ(BiTree T)// { if (T) { InOrderTraverseZ(T->lchild); if (T->data!='#') { printf("%c",T->data); } InOrderTraverseZ(T->rchild); } } void InOrderTraverseH(BiTree T)// { if (T) { InOrderTraverseH(T->lchild); InOrderTraverseH(T->rchild); if (T->data!='#') { printf("%c",T->data); } } } int sumleaf(BiTree T)// { int sum=0,m=0,n=0; if(T) { if(!T->lchild && !T->rchild) sum++; m=sumleaf(T->lchild); sum+=m; n=sumleaf(T->rchild); sum+=n; } return sum; } int main() { BiTree l; int sum=0; l=Create(l); InOrderTraverseX(l); printf("
"
); InOrderTraverseZ(l); printf("
"
); InOrderTraverseH(l); printf("
"
); sum=sumleaf(l); printf("sum=%d
"
,sum); return 0; }

안녕 ~

좋은 웹페이지 즐겨찾기