计算二叉树叶子结点数目

二叉树按照二叉链表方式存储,编写程序,计算二叉树中叶子结点的数目。

按先序输入二叉树各结点,其中#表示取消建立子树结点。

输出二叉树中叶子节点的数目。

ABD##EH###CF#I##G##

4

#include 
#include 
#include 

#define DataType char
using namespace std;

typedef struct BinTreeNode
{
    char data;
    struct BinTreeNode *lchild;
    struct BinTreeNode *rchild;
}BinTree, *PBinTree;

PBinTree CreateBinTree()
{
    PBinTree root = (PBinTree)malloc(sizeof(BinTree));
    char c = getchar();
    if(c == '#')
        return NULL;
    else
    {
        root->data = c;
        root->lchild = CreateBinTree();
        root->rchild = CreateBinTree();

    }
    return root;
}

int LeafCount(PBinTree root)
{
    if(!root)
        return 0;
    else
    {
        if((!root->lchild)&&(!root->lchild))
            return 1;
        else
            return LeafCount(root->lchild)+LeafCount(root->rchild);
    }
}
int main()
{
    PBinTree T;
    T = CreateBinTree();
    cout << LeafCount(T) << endl;
    return 0;
}

你可能感兴趣的:(计算二叉树叶子结点数目)