码迷,mamicode.com
首页 > 其他好文 > 详细

先序遍历创建二叉树,对二叉树统计叶子节点个数和统计深度(创建二叉树时#代表空树,序列不能有误)

时间:2015-07-25 00:14:27      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:二叉树   叶子节点个数   二叉树深度   

#include "stdio.h"
#include "string.h"
#include "malloc.h"
#define NULL 0
#define MAXSIZE 30
typedef struct BiTNode      //定义二叉树数据结构
{
    char data;
    struct BiTNode *lchild,*rchild;
} BiTNode;
void preCreate(BiTNode *& T)   //先序遍历建立二叉树,#代表空树
{
    char ch;
    ch=getchar();
    if(ch==‘#‘)
        T=NULL;
    else
    {
        if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
            printf("Error!");
        T->data=ch;
        preCreate(T->lchild);
        preCreate(T->rchild);
    }
}
int getLeafNum(BiTNode *root)//统计二叉树叶子节点个数
{
    int count=0;//叶子总数,左子树叶子数.右子数叶子数
    int left_count=0;
    int right_count=0;
    /*判断根节点是否为null
      若根节点不空,判断根节点是否是叶子,是的话叶子总数+1并返回,
      若不是统计左子树叶子数目和右子数叶子数目并相加返回
      若根节点为空,则叶子数为0并返回


    */
    if(root)
    {
        if(root->lchild==NULL&&root->rchild==NULL)
            count++;
        else
        {
            left_count=getLeafNum(root->lchild);
            right_count=getLeafNum(root->rchild);
            count=left_count+right_count;
        }
    }
    else
    {
        count=0;
    }


    return count;


}
int getTreeDepth(BiTNode *root)//统计二叉树深度
{
    int depth=0;
    int left_depth=0;
    int right_depth=0;
    /*
       判断根节点是否为空,
       若根节点为空,深度置为0,并返回
       若根节点不为空,统计左子树深度,统计右子树深度,二者相加后再加上1(1位根节点)并返回
    */
    if(root)
    {
        left_depth=getTreeDepth(root->lchild);
        right_depth=getTreeDepth(root->rchild);
        depth=1+(left_depth>right_depth?left_depth:right_depth);
    }
    else
    {
        depth=0;
    }
    return depth;


}
int main()
{
    BiTNode * bitree=NULL;
    preCreate(bitree);//先序遍历创建二叉树
    printf("叶子个数:%d\n",getLeafNum(bitree));
    printf("该二叉树深度:%d\n",getTreeDepth(bitree));
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

先序遍历创建二叉树,对二叉树统计叶子节点个数和统计深度(创建二叉树时#代表空树,序列不能有误)

标签:二叉树   叶子节点个数   二叉树深度   

原文地址:http://blog.csdn.net/u010660346/article/details/47049327

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!