PAT A 1086. Tree Traversals Again (25)
来源:互联网 发布:淘宝申请售后时间限制 编辑:程序博客网 时间:2024/05/17 23:49
题目
An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stack operations are: push(1); push(2); push(3); pop(); pop(); push(4); pop(); pop(); push(5); push(6); pop(); pop(). Then a unique binary tree (shown in Figure 1) can be generated from this sequence of operations. Your task is to give the postorder traversal sequence of this tree.
Figure 1
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive integer N (<=30) which is the total number of nodes in a tree (and hence the nodes are numbered from 1 to N). Then 2N lines follow, each describes a stack operation in the format: "Push X" where X is the index of the node being pushed onto the stack; or "Pop" meaning to pop one node from the stack.
Output Specification:
For each test case, print the postorder traversal sequence of the corresponding tree in one line. A solution is guaranteed to exist. All the numbers must be separated by exactly one space, and there must be no extra space at the end of the line.
Sample Input:
6Push 1Push 2Push 3PopPopPush 4PopPopPush 5Push 6PopPop
Sample Output:
3 4 2 6 5 1
先构造树,然后后续遍历
代码:
#include <iostream>#include <string>using namespace std;struct node//点{int key;node *left,*right;node(int k):key(k),left(NULL),right(NULL){};};node* buildtree();//构造树void postorder(node* p,node* root);//后续遍历int n,num_t=0;//n,已经执行的指令数string ins;//指令int key;//输入的值int main(){node *root=NULL;cin>>n;root=buildtree();postorder(root,root);return 0;}node* buildtree()//根据堆栈信息构造树,递归{node* r=NULL;if(num_t<2*n){cin>>ins;if(ins=="Push")//压入,依次处理左右子树{num_t++;cin>>key;r=new node(key);r->left=buildtree();r->right=buildtree();}else//弹出{num_t++;return NULL;}}return r;}void postorder(node* p,node* root)//后续遍历{if(p->left!=NULL)postorder(p->left,root);if(p->right!=NULL)postorder(p->right,root);cout<<p->key;if(p!=root)cout<<" ";}
- PAT A 1086. Tree Traversals Again (25)
- PAT(A) - 1086. Tree Traversals Again (25)
- PAT-A-1086. Tree Traversals Again (25)
- Pat(A) 1086. Tree Traversals Again (25)
- pat 1086. Tree Traversals Again (25)
- PAT 1086. Tree Traversals Again (25)
- 【PAT】1086. Tree Traversals Again (25)
- PAT 1086. Tree Traversals Again (25)
- 【PAT】1086. Tree Traversals Again (25)
- PAT甲级.1086. Tree Traversals Again (25)
- 1086. Tree Traversals Again (25) PAT甲级
- PAT 甲级 1086. Tree Traversals Again (25)
- PAT 1086. Tree Traversals Again
- PAT 1086. Tree Traversals Again
- 【PAT】1086. Tree Traversals Again
- PAT--1086. Tree Traversals Again
- Tree Traversals Again (PAT)
- 1086. Tree Traversals Again (25)-PAT甲级真题
- C语言字符串输如输出
- 百度地图API常规应用十功能
- UVA11796- Dog Distance
- eclipse 转换项目为C++项目,在列表中找不到项目名
- 沟通管理--关于信息的有效传递和维护
- PAT A 1086. Tree Traversals Again (25)
- 使用 Drools 规则引擎实现业务逻辑
- 谷歌眼镜-残缺的进步
- VS可增加调试效率的伪符号getlasterror
- 监控Tomcat解决方案(监控应用服务器系列文章)
- sgu108 Self-numbers II 规律
- mysql二进制日志详解
- 函数指针以及函数指针数组的定义与使用
- weblogic 性能监控学习一点想法记录