首页 > 学院 > 开发设计 > 正文

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

2019-11-08 19:36:21
字体:
来源:转载
供稿:网友

PRoblem Description

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

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

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

abc,,de,g,,f,,, Example Output

3 Hint

Author

xam

#include<stdio.h>#include<stdlib.h>#include<string.h>char a[55];int top;struct node{ int data; struct node *l, *r;};struct node *creat()//重建二叉树{ struct node *root; top++; if(a[top] == ',') root = NULL; else { root = (struct node *) malloc (sizeof(struct node)); root -> data = a[top]; root -> l = creat(); root -> r = creat(); } return root;};int yezi(struct node *root){ if(root == NULL) return 0; if(root -> l == NULL && root -> r == NULL) return 1; else return yezi(root -> l) + yezi(root -> r);//递归把左子树的叶子数跟右子树的叶子数加起来}int main(){ while(scanf("%s", a) != EOF) { top = -1; struct node *root; root = creat(); printf("%d/n", yezi(root)); } return 0;}
上一篇:LeetCode || 001 Two Sum

下一篇:枚举

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表