博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中国大学MOOC-陈越、何钦铭-数据结构-2018秋 03-树3 Tree Traversals Again (25 分)
阅读量:3903 次
发布时间:2019-05-23

本文共 2076 字,大约阅读时间需要 6 分钟。

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 
#include
#include
#include
#include
using namespace std;const int maxn=35;int n,ci=0;struct tree{ int data; struct tree *left,*right;};tree* root;tree* traverse (){ if(ci==n*2) return NULL; char s[10]; scanf("%s",s); if(!strcmp(s,"Push")) { int x; scanf("%d",&x); tree* t=(tree*)malloc(sizeof(tree)); t->data=x; ci++; t->left=traverse(); ci++; t->right=traverse (); return t; } else return NULL;}void post (tree* t){ if(t==NULL) return; post(t->left); post(t->right); if(t==root) printf("%d\n",t->data); else printf("%d ",t->data);}int main(){ scanf("%d",&n); root=traverse(); post(root); return 0;}

 

转载地址:http://xtaen.baihongyu.com/

你可能感兴趣的文章
NetBeans 6.5 新建项目 project folder already exist and is not empty
查看>>
open office (ooffice) 如何使用公式编辑器 (formula)
查看>>
mysql 自动增长 字段 插入
查看>>
使用JDBC时 Class.forName()的作用
查看>>
VBA Collection
查看>>
vba dictionray
查看>>
为vc程序增加mfc支持
查看>>
vc 文件存在 文件属性 删除文件
查看>>
vc彻底删除目录
查看>>
vc error
查看>>
visual studio 2008 a problem has been encountered while loading the setup components
查看>>
visual studio 2008 a problem has been encountered while loading the setup components
查看>>
wpf 形状 RichTextBox
查看>>
创建可拖拉的图形及连接图形的线条
查看>>
Hosting an ActiveX Control in WPF
查看>>
WPF FlowDocuments (1) – Images, Shapes and Tables
查看>>
Hosting Office in a WPF Application
查看>>
WPF Diagramming. Drawing a connection line between two elements with mouse.
查看>>
centering-text-on-a-wpf-shape
查看>>
解决打开word很慢
查看>>