您的位置:首页 > 其它

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

2016-03-25 22:18 363 查看
[align=left]描述[/align]
先序建立一棵二叉树,采用二叉链表结构存储,并计算该二叉树中叶子节点的数目。

[align=left]输入[/align]
输入一串先序遍历字符串,根据此字符串建立一棵二叉树(以指针方式存储)。

如输入某二叉树的先序序列为ABC##DE#G##F###(其中#表示空格字符,空格字符代表空树)。

[align=left]输出[/align]
输出叶子节点的个数(输出结果后换行)。

[align=left]输入样例[/align]
ABC##DE#G##F###

[align=left]输出样例[/align]
3

#include <iostream>
#include <stdlib.h>
#include <cstdio>

#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;
}

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: