题库首页 › 青少年软件编程(C语言) › 题目 11354

模拟树遍历 二叉树的中序遍历可以借助一个堆栈来用非递归的方式实现。例如,对一棵有 6 个结点的二叉树(结点键值从 1 到 6)进行遍历,堆栈操作为:push(1); push(2); push(3); pop(); pop(); push(4); pop(); pop(); push(5); push(6); pop(); pop() —— 其中 push 为入栈,pop 为出栈。则这套操作对应了一棵唯一的二叉树,如下图所示。 你的任务是输出这棵树的后序遍历序列。 时间限制:1000 内存限制:262144 输入 输入第一行给出一个正整数 N(≤ 30),是二叉树中结点的个数(结点键值从 1 到 N)。随后 2N 行,每行给出一个堆栈操作:`Push X` 表示将键值为 `X` 的结点入栈,`Pop` 表示将一个结点出栈。 输出 在一行中输出该树后序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。裁判保证输入数据一定对应了一棵树。 样例输入 6 Push 1 Push 2 Push 3 Pop Pop Push 4 Pop Pop Push 5 Push 6 Pop Pop 样例输出 3 4 2 6 5 1

模拟树遍历 二叉树的中序遍历可以借助一个堆栈来用非递归的方式 题目配图

正确答案:按push/pop重建二叉树:push建点入栈,pop弹出栈顶为子节点。再递归后序遍历(左-右-根)输出

试卷来源:202409 青少年等级考试C/C++真题七级

本卷相关题目

在线做题 同科目题库