#Z01237. 是否完美二叉树?

是否完美二叉树?

题目描述

二叉树是计算机中数据结构的一种,二叉树是每个结点最多有两个子树的树结构,通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树有四种遍历方式,分别是先序遍历,中序遍历,后序遍历,层序遍历。完美二叉树的定义是这样:我们把二叉树的高度和宽度差的绝对值在d(0 1、先序遍历:首先访问根,再先序遍历左子树,最后先序遍历右子树。(根左右) 2、中序遍历:首先中序遍历左子树,再访问根,最后中序遍历右子树。(左根右) 3、后续遍历:首先后序遍历左子树,再后序遍历右子树,最后访问根。(左右根) 4、层序遍历:即按照层次访问,通常用队列来做。访问根,访问子女,再访问子女的子女(越往后的层次越低)(两个子女的级别相同),通俗来讲就是第一层从左到右遍历完遍历第二层,直到遍历完第n层。

        例如:         如图所示,该树的先序遍历为:FCADBEHGM ,后续遍历为:ABDCHMGEF,中序遍历为:ACBDFHEMG,层序遍历:FCEADHGBM。 今天你的任务很简单,我将告诉你这棵二叉树的前续遍历和中序遍历,判断是否为完美二叉树?并且打印层序遍历。

输入格式

输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列a1~an。第三行给出其前序遍历序列b1~bn。数字间以空格分隔,题目保证结点数据不相同。(-2^31

输出格式

第一行输出二叉树的高度和宽度,中间以空格分隔,首尾无空格。 第二行输出是否完美二叉树,如果是,请输出“This is a perfect binary tree.”;如果不是,请输出“This is not a perfect binary tree.”。 第三行输出该二叉树的层序遍历,中间以空格分隔,首尾无空格。输出格式请对照样例。

7
1 2 3 4 5 6 7
4 1 3 2 6 5 7
4 3
This is a perfect binary tree.
levelorder:4 1 6 3 5 7 2