您的位置:首页 > 理论基础 > 数据结构算法

数据结构实验之二叉树三:统计叶子数

2017-08-08 22:26 363 查看

                                                                  数据结构实验之二叉树三:统计叶子数

Time Limit: 1000MS Memory Limit: 65536KB[align=center][/align]

Problem Description

已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并求二叉树的叶子结点个数。

Input

连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。

Output

输出二叉树的叶子结点个数。

Example Input

abc,,de,g,,f,,,

Example Output

3
//统计叶子数#include<iostream>#include<string>#include<cstring>#include<string.h>#include<stdlib.h>using namespace std;int num;char ch[100];struct BinTreeNode{char data;BinTreeNode *RChild;BinTreeNode *LChild;};class BinaryTree{BinTreeNode *root;public:BinaryTree() :root(NULL){}                //初始化void Creat(BinTreeNode *&subTree);            //创建二叉树void Count(BinTreeNode *&subTree,int&n);};void BinaryTree::Creat(BinTreeNode *&subTree)          //先序建立二叉树{char item = ch[num++];if (item != ','){subTree = new BinTreeNode;if (subTree == NULL)   exit(0);subTree->data = item;Creat(subTree->LChild);    //循环Creat(subTree->RChild);}else subTree = NULL;}void BinaryTree::Count(BinTreeNode *&subTree,int &n)    //求叶子的个数{if (subTree != NULL){if (subTree->LChild == NULL&&subTree->RChild == NULL)n++;Count(subTree->LChild, n);Count(subTree->RChild, n);}}int main(){while (cin >> ch){num = 0;int n = 0;BinaryTree b;BinaryTree();BinTreeNode *subTree;b.Creat(subTree);b.Count(subTree,n);cout << n << endl;}return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: