题目描述: 现在只知道二叉树的层次遍历序列和中序遍历序列。你能写出先序遍历序列和后序遍历序列吗? 二叉树的节点用从A开始的大写字母表示节点数最大不超过26。输入: 输入数据包含N个测试样例。 每个测试样例包含一行分别为层次遍历序列和中序遍历序列以空格隔开。输出: 对于每组测试样例输出数据包含一行分别为先序遍历序列和后序遍历序列以空格隔开。样例输入:测试样例个数:2CBA BCABA
思路: 根据层次遍历序列和中序遍历序列可以确定二叉树的形状,进而可以得到先序遍历序列和后序遍历序列。
先根据中序遍历序列确定根节点,然后将层次遍历序列按照根节点的左右划分成左子树和右子树的层次遍历序列,再根据左右子树的中序遍历序列重复上述步骤,直到所有节点都被遍历。
对于每个子树,先递归处理左子树,再递归处理右子树。先序遍历序列的生成方式为:先输出根节点,再输出左子树的先序遍历序列,最后输出右子树的先序遍历序列。后序遍历序列的生成方式为:先输出左子树的后序遍历序列,再输出右子树的后序遍历序列,最后输出根节点。
代码:
原文地址: https://www.cveoy.top/t/topic/dc5V 著作权归作者所有。请勿转载和采集!