数据结构实验之二叉树三:统计叶子数
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;}
相关文章推荐
- 3342数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 3342 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 3342 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数
- 数据结构实验之二叉树三:统计叶子数