遍历二叉树
来源:互联网 发布:淘宝模特天天 编辑:程序博客网 时间:2024/06/10 02:45
遍历二叉树
Acceteped : 500 Submit : 794 Time Limit : 1000 MS Memory Limit : 65536 KBDescription
根据输入重构一个二叉树,输出按不同顺序遍历的节点序列
数据输入:
第一行是一个整数N(1<=N<=20),表示有多少个测试例子,以下每行是一个测试例子。每个测试例子第一个是一个整数M,表示输出的遍历顺序,其中M=0,表示前序;M=1,表示中序;M=2,表示后序。然后是一个字符序列,字符序列由A-Z和#表示,A-Z表示节点,#表示空。如果字符所在字符串的位置为i(i为正整数,位置从1开始计数),则位置为i*2,i*2+1的节点为它的子节点。如果i*2,i*2+1超过字符串长度,表示子节点为空。
数据输出:
每行输出一个例子的结果。一个字符串,中间无空格。
Sample Input
20 AB#CD####EF1 AB#CD####EF
Sample Output
ABCDEFCBEDFA
#include<iostream>using namespace std;int main(){ void preordertrave(char T[],int i); void inordertrave(char T[],int i); void pastordertrave(char T[],int i); int isnull(char T[],int i); int m,n,i; char s[1000]; cin>>n; while(n--) { cin>>m; getchar(); gets(s+1); s[0]=strlen(s+1); if(m==0) //switch(m) // {case 0: preordertrave(s,1);//break; else if(m==1) //case 1: inordertrave(s,1);//break; else if(m==2) // case 2: pastordertrave(s,1);//break; // } cout<<endl; } // system ("pause"); return 0;}int isnull(char T[],int i){ return !(i>0&&i<=T[0]&&T[i]!='#'); }void preordertrave(char T[],int i){ if(!isnull(T,i)) { putchar(T[i]); // cout<<T[i]; preordertrave(T,i*2); preordertrave(T,i*2+1); } }void inordertrave(char T[],int i){ if(!isnull(T,i)) { inordertrave(T,i*2); //cout<<T[i]; putchar(T[i]); inordertrave(T,i*2+1); }}void pastordertrave(char T[],int i){ if(!isnull(T,i)) { pastordertrave(T,i*2); pastordertrave(T,i*2+1); //cout<<T[i]; putchar(T[i]); }}
- 二叉树遍历、分层遍历
- 遍历二叉树--二叉树
- 【树】遍历二叉树
- 二叉树遍历
- 二叉树遍历
- 二叉树的遍历
- (原创)遍历二叉树
- 二叉树遍历-php
- 查找--遍历二叉树
- 遍历二叉树
- 二叉树遍历规则
- 二叉树的遍历
- 二叉树遍历
- 遍历二叉树
- 二叉树遍历问题
- 二叉树遍历
- 二叉树遍历(zz)
- 二叉树的遍历
- struts2 tag
- C++ & .NET
- 关于C#中对象内存释放的处理
- 串行通信的基本概念
- binder 分析
- 遍历二叉树
- 前苹果游戏设计师谈iPhone应用开发者的失败原因
- 批量处理
- 行测做题方法
- SecureCRT的恢复全屏问题
- mysql数据库导入导出
- C#从Excel中读取数据为空了
- Struts2 jQuery Ajax form提交
- C语言中可变参数的用法