Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inorder traversal sequences. And it is a simple standard routine to print the numbers in level-order. However, if you think the problem is too simple, then you are too naive. This time you are supposed to print the numbers in "zigzagging order" -- that is, starting from the root, print the numbers level-by-level, alternating between left to right and right to left. For example, for the following tree you must output: 1 11 5 8 17 12 20 15.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (≤30), the total number of nodes in the binary tree. The second line gives the inorder sequence and the third line gives the postorder sequence. All the numbers in a line are separated by a space.
Output Specification:
For each test case, print the zigzagging sequence of the tree in a line. All the numbers in a line must be separated by exactly one space, and there must be no extra space at the end of the line.
Sample Input:
812 11 20 17 1 15 8 512 20 17 11 15 8 5 1
Sample Output:
1 11 5 8 17 12 20 15 思路: 我是先根据后序遍历和中序遍历序列建立这个二叉树使用的是二叉链表,然后进行层序遍历。因为题目要求进行“Z"字形层次遍历, 所以不能在遍历中直接输出,而应该每遍历完一层再输出,比如第一层是顺序输出,第二次就逆序输出。那么怎么知道一层遍历结束了呢? 使用last变量指向每层最后一个元素的下标,当front等于last的时候,一层就结束了。这种方法在求二叉树的宽度的时候也有用到。
#include#include #include #include #include #include