数据结构实验之二叉树的建立与遍历(万能了,水)
来源:互联网 发布:redis与mysql区别 编辑:程序博客网 时间:2024/05/16 14:39
数据结构实验之二叉树的建立与遍历
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。
Input
输入一个长度小于50个字符的字符串。
Output
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
Example Input
abc,,de,g,,f,,,
Example Output
cbegdfacgefdba35
Hint
Author
ma6174
水题
#include <bits/stdc++.h>using namespace std;struct Btree{ char data; struct Btree *lc,*rc;};char st[10010];int ans;int cnt;struct Btree* creat(){ struct Btree *root; if(st[++ans] == ',') { root = NULL; } else { root = new Btree; root -> data = st[ans]; root -> lc = creat(); root -> rc = creat(); } return root;};void LDR(struct Btree * root){ if(root) { LDR(root -> lc); cout<<root ->data; LDR(root -> rc); //if(!root -> lc && !root -> rc) // cnt++; }}void LRD(struct Btree *root){ if(root) { LRD(root -> lc); LRD(root -> rc); cout<<root->data; }}int depth(struct Btree *root)//递归求树的深度{ if(root == NULL) return 0; else { int m = depth(root -> lc); int n = depth(root -> rc); return (m > n)?(m+1):(n+1); }}//再加上个层序遍历,基本全了void cengxu(struct Btree * root)//以层序遍历的方式,寻找叶子节点{ queue<Btree*>q; if(root) q.push(root); Btree *qq; while(!q.empty()) { qq = q.front(); q.pop(); if(qq -> lc) q.push(qq->lc); if(qq -> rc) q.push(qq->rc); if(!qq->lc && !qq->rc)//左右子节点都为空,即为叶子节点 cnt++; }}int main(){ while(cin>>st) { ans = -1; cnt = 0; struct Btree *root; root = creat(); LDR(root); cout<<endl; LRD(root); cout<<endl; cengxu(root); cout<<cnt<<endl; int deep = depth(root); cout<<deep<<endl; } return 0;}
阅读全文
1 0
- 数据结构实验之二叉树的建立与遍历(万能了,水)
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- sdutoj2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- [My SQL] 创建计算字段
- 算法--快速排序
- js语言精粹读书笔记
- Linux系统调用的实现机制分析
- Spring(15)——基于注解的支持(二)
- 数据结构实验之二叉树的建立与遍历(万能了,水)
- 队列——顺序存储与链式存储
- python3爬虫post请求
- day20(IO流)
- Spring-Cloud学习之路-简单的Eureka
- 《Unix环境高级编程》学习笔记--文件和目录-1
- 剑指Offer——知识点储备-JVM基础
- OCJP认证该不该考?
- Android MVC模式你真的明白了吗??