计算二叉树中叶子节点的数目

来源:互联网 发布:微星主板监控软件 编辑:程序博客网 时间:2024/04/28 12:27
描述
先序建立一棵二叉树,采用二叉链表结构存储,并计算该二叉树中叶子节点的数目。
 
输入
输入一串先序遍历字符串,根据此字符串建立一棵二叉树(以指针方式存储)。
如输入某二叉树的先序序列为ABC##DE#G##F###(其中#表示空格字符,空格字符代表空树)。
 
输出
输出叶子节点的个数(输出结果后换行)。
 
输入样例
ABC##DE#G##F###
 
输出样例

3


#include <iostream>#include <stdlib.h>#include <cstdio>#define DataType charusing 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;}void PostOrderTraverse(PBinTree root){    if(root)    {        printf("%c", root->data);        PostOrderTraverse(root->lchild);        PostOrderTraverse(root->rchild);    }}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();    //PostOrderTraverse(T);    cout << LeafCount(T) << endl;    return 0;}


0 0
原创粉丝点击