03-树2. Tree Traversals Again (25)
2015-06-02 10:49
519 查看
An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose thatwhen 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 Figure1) 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:
Sample Output:
提交代码
题目的意思是给你inorder的栈操作步骤,让你写出postorder后的序列。
我的思路是先还原原来的树,再进行递归后序。
代码如下。
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:
6 Push 1 Push 2 Push 3 Pop Pop Push 4 Pop Pop Push 5 Push 6 Pop Pop
Sample Output:
3 4 2 6 5 1
提交代码
题目的意思是给你inorder的栈操作步骤,让你写出postorder后的序列。
我的思路是先还原原来的树,再进行递归后序。
代码如下。
#include <iostream> #include <stdlib.h> #include <string.h> #include <stack> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ typedef struct Node { int data; Node *l; Node *r; Node(int data) { this->data=data; } } *BinTree; int N=0,count=0,in=0; BinTree Bulid() { char s[10]; int a=0; BinTree nod=NULL; if(count<2*N) { scanf("%s",s); if(strcmp(s,"Push") ==0 ) { scanf("%d",&a); nod=new Node(a); count++; } else { count++; return NULL; } nod->l=Bulid(); nod->r=Bulid(); } return nod; } void post(BinTree bt) { if(bt) { post(bt->l); post(bt->r); in++; printf("%d",bt->data); if(in<N) printf(" "); } } int main(int argc, char** argv) { cin>>N; Node* root=Bulid(); post(root); // cout<<s<<a; return 0; }
相关文章推荐
- Leetcode Contains Duplicate I, II, III
- explain 的详细说明
- RAID
- leetcode - Contains Duplicate III
- SAP内向交货详解 Details on SAP inbound delivery
- 领域驱动设计(Domain Driven Design)参考架构详解
- grails项目输出日志设定
- 强人工智能之“全本的鹦鹉”
- leetcode 220: Contains Duplicate III
- BeginWaitCursor()、EndWaitCursor()和RestoreWaitCursor()3个成员函数处理等待光标
- 台球游戏的核心算法和AI(2)
- LeetCode Contains Duplicate II
- [LeetCode] Contains Duplicate III 包含重复值之三
- 岁月的剪影【六月Rainy】
- aidl ( 六) RemoteCallbackList
- Contains Duplicate III - LeetCode 220
- Contains Duplicate II - LeetCode 219
- stitching_detail
- Ansible(14)wait_for模块
- RaisedCosineWindower API及加窗