Description

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

多组测试数据,对于每组测试数据,输入一个长度小于50的按前序遍历输入的字符序列。
Output

对于每组测试数据,第1行输出其前序遍历序列、第2行输出其中序遍历序列、第3行输出其后序遍历序列、第4行输出其层次遍历序列、第5行输出其深度、第6行输出其叶子数。

Sample

Input
abc,de,g,f,

Output

abcdegf
cbegdfa
cgefdba
abcdefg
5
3

#include<bits/stdc++.h>using namespace std;typedef struct node
{char data;struct node *l, *r;
} Tree;char pre[55];
int cnt, leaves;Tree *creat()
{Tree *root;if(pre[cnt] == ','){cnt++;root = NULL;}else{root = new Tree;root->data = pre[cnt++];root->l = creat();root->r = creat();}return root;
}void preoreder(Tree *root)
{if(root){printf("%c", root->data);preoreder(root->l);preoreder(root->r);}
}void midoreder(Tree *root)
{if(root){midoreder(root->l);printf("%c", root->data);midoreder(root->r);}
}void posoreder(Tree *root)
{if(root){posoreder(root->l);posoreder(root->r);printf("%c", root->data);}
}void cengxu(Tree *root)//模拟队列
{Tree * que[1000];int i = 0, j = 0;que[i++] = root;while(i > j){if(que[j]){que[i++] = que[j]->l;que[i++] = que[j]->r;printf("%c", que[j]->data);if(que[j]->l == NULL && que[j]->r == NULL)leaves++;}j++;}
}
/*void cengxu(Tree *root)//STL
{Tree *temp;queue<Tree *>q;q.push(root);while(!q.empty()){temp = q.front();q.pop();if(temp){if(!temp->l && !temp->r)leaves++;printf("%c", temp->data);if(temp->l)q.push(temp->l);if(temp->r)q.push(temp->r);}}
}
*/
int depth_bintree(Tree *root)
{int de = 0;if(root){int left_depth = depth_bintree(root->l);int right_depth = depth_bintree(root->r);de = left_depth > right_depth ? left_depth + 1 : right_depth + 1;}return de;
}
int main()
{while(~scanf("%s", pre)){cnt = 0;leaves = 0;Tree *root = creat();preoreder(root);printf("\n");midoreder(root);printf("\n");posoreder(root);printf("\n");cengxu(root);printf("\n");printf("%d\n", depth_bintree(root));printf("%d\n", leaves);}return 0;
}

二叉树(前序遍历序列、中序遍历序列、后序遍历序列、层次遍历序列、深度、叶子数)相关推荐

  1. 二叉树的构造(前序+中序)---(后序 + 中序)

    二叉树的构造(前序+中序)-(后序 + 中序) 思路:要对前序+中序(后序+中序)的构建树的动态过程要了解,思路比较简单,在了解了这个过程之后,理解下面代码就容易了. 过程 参考图: 前序 + 中序: ...

  2. Algorithm Gossip (22) 中序式转后序式(前序式)

    前言 This Series aritcles are all based on the book <经典算法大全>; 对于该书的所有案例进行一个探究和拓展,并且用python和C++进行 ...

  3. 栈的应用--中序表达式转后序表达式

    栈的应用--中序表达式转后序表达式 infix : a+b*c+(d*e+f)*g postfix : abc*+de*f+g*+ 有以下四种情况: 操作数->直接输出 操作符->将栈顶输 ...

  4. Algs4-1.3.10中序表达式转为后序表达式(第二次实现)

    1.3.10编写一个过滤器InfixToPostfix,将算术表达式由中序表达式转为后序表达式.  答:本次做这个题时离上次做这个题有一个半月了,已经忘记了当时的算法.经过两个小时的研究(远低于第一次 ...

  5. PAT甲级1086 Tree Traversals Again:[C++题解]二叉树中序序列、栈、求后序遍历

    文章目录 题目分析 题目链接 题目分析 分析: 给定栈模拟的二叉树的中序序列. 我们可以发现一些性质: 1 第一个值是根结点. 2 对于所有的push操作,如果上一个是push,该结点就是上一个结点的 ...

  6. 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表

    一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...

  7. 已知二叉树前序中序,求后序代码实现

    思路: 平时做笔试题目时,都是先拿前序的首字母,去和中序的字母比较,然后把中序的分成两段,不停的遍历,直到长度等于一(即叶子节点). 例题 二叉树是一种常用的数据结构.我们可以用大写的英文字母表示二叉 ...

  8. leetcode 589. N 叉树的前序遍历,590. N 叉树的后序遍历(Java版)

    589. N 叉树的前序遍历 https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/ 题解 import java.util.A ...

  9. POJ 2255 Tree Recovery(已知前序中序,求后序)

    1. 题目链接:http://poj.org/problem?id=2255 2. 题目大意: 给定二叉树的前序和中序序列,输出其后序序列 3. 思考过程: 4. AC代码 /*** @descrip ...

  10. 已知前序中序,求后序

    已知二叉树的前序和中序,求其后序 例:前序(A B D G H C E I F J ) 中序(G D H B A E I C J F) 其后序为:G H D B I E J F C A 思路:先序的遍 ...

最新文章

  1. harris角点检测与绘制。通过滑动滚动条来控制阈值,以控制检测角点的数量并返回角点坐标
  2. Integer的自动缓存
  3. Java实现有序数组和无序数组_【算法】字典的诞生:有序数组 PK 无序链表
  4. EXECUTE IMMEDIATE用法小解
  5. java audiorecord_Android 录音实现(AudioRecord)
  6. 146. LRU 缓存机制
  7. STM32H743+CubeMX-QSPI+DMA读取外部FLASH(W25Q128JVSQ)
  8. 从0开始架构一个IOS程序——iOS 根据文字的长度来动态设置UILabel的大小
  9. python按照时间timestramp切分网络前向流与后向流
  10. 配置centos环境
  11. c语言- I Love GPLT
  12. 3.1 数值分析: 迭代法的基本思想
  13. c++实现课程管理系统
  14. java对象交换_如何在Java中交换或交换对象?
  15. 筛选过的 Code rule
  16. 36岁,被单位解聘,我干起了深夜外卖
  17. 图解Pandas,又一个Pandas学习利器!
  18. 数据结构与算法实验6——图论 7-10 公路村村通
  19. Python基础语法笔记
  20. 杨家海 清华大学 研究员,博导

热门文章

  1. 爱奇艺个性化推荐排序实践【转】
  2. 百度咋做长文本去重(一分钟系列)--转
  3. hive表信息查询:查看表结构、表操作等--转
  4. How those spring enable annotations work--转
  5. mysql 存储过程项目小结
  6. mvn命令安装jar包--转
  7. 《Credit Risk Scorecard》第五章: Development Database Creation
  8. bubbliiiing/keras-face-recognition
  9. Serverless应用场景
  10. 初识区块链——用JS构建你自己的区块链