#include<stdio.h>
#include<stdlib.h>
#include<queue>
struct TNode//树的节点
{
    int data;
    struct TNode *l,*r;
};

TNode* Create()//建树
{
    char ch;
    scanf("%c",&ch);
    if(ch == '.')
    {
        return NULL;
    }
    else
    {
        TNode* t;
        t = (TNode*)malloc(sizeof(TNode));
        t->data = ch;
        t->l = Create();
        t->r = Create();
        return t;
    }
}
int Deep(TNode* tree)//求树的深度
{
    int dl=0,dr=0;
    if(tree)
    {
        dl = Deep(tree->l);
        dr = Deep(tree->r);
        return dl>dr?dl+1:dr+1;
    }
    return 0;
}
int leaf_num=0;
void leaf(TNode* tree)//求树的叶子数目
{
    if(!tree) return;
    if(tree->l == NULL && tree->r == NULL)
    {
        leaf_num++;
    }
    leaf(tree->l);
    leaf(tree->r);
}
void PreOrder(TNode* tree)//先序遍历
{
    if(tree)
    {
        printf("%c ",tree->data);
        PreOrder(tree->l);
        PreOrder(tree->r);
    }
}
void InOrder(TNode* tree)//中序遍历
{
    if(tree)
    {
        InOrder(tree->l);
        printf("%c ",tree->data);
        InOrder(tree->r);
    }

}
void ProOrder(TNode* tree)//后续遍历
{
    if(tree)
    {
        ProOrder(tree->l);
        ProOrder(tree->r);
        printf("%c ",tree->data);
    }
}

void cengxu(TNode* tree)//层序遍历
{
    std::queue<TNode*> Q;
    if(tree) Q.push(tree);
    while(!Q.empty())
    {
        TNode* t = Q.front();
        Q.pop();
        //printf("%c ",t->data);
        if(t->l!=NULL && t->r!=NULL)
        {
            Q.push(t->l);
            Q.push(t->r);
        }
        else if(t->l!=NULL && t->r==NULL)
        {
            Q.push(t->l);
        }
        else if(t->l==NULL && t->r!=NULL)
        {
            Q.push(t->r);
        }
    }
}

int main ()
{
    TNode* t = NULL;
    t = Create();
    /*PreOrder(t);
    printf("\n");
    InOrder(t);
    printf("\n");
    ProOrder(t);
    printf("\n");*/

    /*int d = Deep(t);
    printf("树的深度为:%d\n",d);*/

    /*leaf(t);
    printf("树的叶子数目为:%d\n",leaf_num);*/

    //cengxu(t);

    return 0;
}

/*
测试
12..3..
123....
*/

 

posted @ 2021-03-07 20:12  永恒&  阅读(34)  评论(0编辑  收藏  举报