统计利用先序遍历创建的二叉树的宽度

利用先序递归遍历算法创建二叉树并计算该二叉树的宽度。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#“时表示该结点不需要创建,否则创建该结点。最后再统计创建完成的二叉树的宽度(是指二叉树每层节点数的最大值)。需要注意输入数据序列中”#“字符和非”#"字符的序列及个数关系,这会最终决定创建的二叉树的形态。

输入
输入为接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树)。

输出
输出该用例对应的二叉树的宽度。

样例输入
A##
ABC####
AB##C##
ABCD###EF##G###
A##B##

样例输出
1
1
2
3
1

代码实现

#include <iostream>
#include <string.h>
using namespace std;
typedef struct Node
{char date;struct Node *lchild;struct Node *rchild;
}BTNode;
int z=0;
BTNode *CreateTree(char a[])
{BTNode *p;char x;p=NULL;x=a[z++];if(x!='#'){p=new BTNode;p->date=x;p->lchild=CreateTree(a);p->rchild=CreateTree(a);}return p;
}
int num[10]={0};
int i=0;
void TreeW(BTNode *b,int i)
{num[i]++;if(b->lchild!=NULL)TreeW(b->lchild,i+1);if(b->rchild!=NULL)TreeW(b->rchild,i+1);
}int main()
{int x=0;BTNode *b;char a[100];while(cin>>a){b=CreateTree(a);TreeW(b,0);int j=0;while(num[j]!=0){if(num[j]>x)x=num[j];j++;}if(x==0)x=1;cout<<x;z=0;x=0;i=-1;memset(num,'\0',sizeof(num));}return 0;
}

SWUST OJ【972】相关推荐

  1. SWUST OJ#971 #972 返回二叉树宽度和深度

    目录 #971 统计利用先序遍历创建的二叉树的深度 题目 思路 代码 #972  统计利用先序遍历创建的二叉树的宽度 题目 思路 代码 #971 统计利用先序遍历创建的二叉树的深度 题目 题目描述 利 ...

  2. 山东理工OJ【2121】数据结构实验之链表六:有序链表的建立(插排法)

     数据结构实验之链表六:有序链表的建立 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 输入N个无序的整数,建立一个有序链表, ...

  3. A+B 问题【OJ 示例题目】

    A+B 问题[OJ 示例题目] 题目描述 欢迎开启算法 OJ 题的大门,本题为经典的 A+BA+B 入门题,我们会以此题为示例介绍蓝桥云课 OJ 系统的正确使用方法. 问题描述 输入两个正整数 A,B ...

  4. 东方博宜OJ——1007 - 【入门】统计大写英文字母的个数

    题目: 1007 - [入门]统计大写英文字母的个数 题目描述 算算以'.'结束的一串字符中含有多少个大写的英文字母. 输入 输入一串字符(长度不超过80),以'.'结束. 输出 输出一行,即这串字符 ...

  5. C语言【数据结构】栈和队列【OJ题(C++)、选择题】

    目录 一.OJ题 1.225. 用队列实现栈 2.232. 用栈实现队列 3.622. 设计循环队列 4.20. 有效的括号 二.选择题 1.下列关于栈的叙述正确的是(B) 2.一个栈的入栈序列为AB ...

  6. 【Day3】【纪中OJ】2019.1.25C组每日总结

    [Day3][纪中OJ]2019.1.25C组每日总结 游记 Morning Afternoon Evening 备忘知识点 匈牙利算法 离散化 堆(堆排序) 相关链接 游记 Morning [Bef ...

  7. NUIST OJ 1364 [2017 江苏科技大学 程序设计竞赛]D.重复成绩统计(改编) 【STL-map】

    NUIST OJ 1364 [2017 江苏科技大学 程序设计竞赛]D.重复成绩统计(改编) [STL-map] NUIST OJ 1364 2017 江苏科技大学 程序设计竞赛D重复成绩统计改编 S ...

  8. NUIST OJ 1352 回顾 【差分】

    NUIST OJ 1352 回顾 [差分] NUIST OJ 1352 回顾 差分 题目 原问题 差分是什么 求An数组和Sn数组 快速求区间和 代码呈现 随便说说 后记 题目 题目描述 第三次选择那 ...

  9. 东方博易OJ——1005 - 【入门】已知一个圆的半径,求解该圆的面积和周长

    大家好 今天给大家带来<东方博易OJ--1005 - [入门]已知一个圆的半径,求解该圆的面积和周长> 题目: 1005 - [入门]已知一个圆的半径,求解该圆的面积和周长 题目描述 已知 ...

  10. 东方博易OJ——1006 - 【入门】打印星号三角形

    大家好, 今天给大家带来<东方博易OJ--1006 - [入门]打印星号三角形> 题目: 1006 - [入门]打印星号三角形 题目描述 打印星号三角形. 输入 输入只有一行,包括1个整数 ...

最新文章

  1. mimo系统matlab,OFDM—MIMO系统的matlab程序
  2. 0x07.基本算法 — 贪心
  3. Automatic Judge 模拟
  4. Bzoj1018 [SHOI2008]堵塞的交通traffic
  5. Gartner预测2017/18年十大物联网技术
  6. 程序员如何 Get 分布式锁的正确姿势?| 技术头条
  7. java反编译之 基础篇(class未加密未混淆)
  8. Golang教程:结构体
  9. 栈和排序---牛客练习赛10--B题
  10. Vue - 超详细最新 WangEditor V5 富文本编辑器安装引入及使用教程(内含在 Nuxt.js 项目中引入的解决方案)
  11. php抽奖实现-概率算法
  12. html如何做站内搜索,站内搜索-Search.html
  13. 微信api接口调用-发朋友圈
  14. 公众号 接收规则 消息_微信公众号教程(11)公众账号接收非文字消息 上
  15. Formal Verification (一) 形式验证的分类、发展、适用场景
  16. 2Opinion Word Expansion and Target Extraction through Double Propagation(2020-10-18)
  17. windows7修改(缩小)快捷方式箭头
  18. Java 三角形求边长和角度
  19. c语言中f1是什么意思啊,F1知识科普,这些字母代表什么你知道吗?
  20. 计算机硬件报警声音,有关电脑发出警报声的.

热门文章

  1. 查找Excel最后一个非空单元格的值,你会吗?(适用于数据加行时,一直引用最后一个非空单元格的值)
  2. 程序员接私活完整攻略
  3. 又到一年清明时,又是一年踏春季
  4. word去掉自动编号格式但保留原编号内容(宏命令)
  5. 研究生学习生活日记——slow down
  6. mysql 视图创建与查询数据库作业(10)
  7. 基于串口通信的摇杆控制器 ---- 摇杆数据的读取、通信协议、从设备解开数据包
  8. MacBook如何安装双系统?
  9. java定时器定时发短信_quartz-job实现实时或定时发送短信任务(示例代码)
  10. php图片加密管理系统,8tupian图片加密平台 v3.0