二叉树的广度优先遍历
2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷
华为OD机试双机位C卷真题目录点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)
题目描述
有一棵二叉树,每个节点由一个大写字母标识(最多26个节点)。
现有两组字母,分别表示后序遍历(左孩子->右孩子->父节点)和中序遍历(左孩子->父节点->右孩子)的结果,请你输出层序遍历的结果。
输入描述
每个输入文件一行,第一个字符串表示后序遍历结果,第二个字符串表示中序遍历结果。(每串只包含大写字母)
中间用单空格分隔。
输出描述
输出仅一行,表示层序遍历的结果,结尾换行。
示例1
输入
CBEFDA CBAEDF
输出
ABDCEF
说明
二叉树为:
A / \ B D / / \ C E F
解题思路
解题思路
1. 理解遍历序列的特点
- 后序遍历:左子树 -> 右子树 -> 根节点
- 后序遍历的最后一个元素必定是整棵树的根节点
- 中序遍历:左子树 -> 根节点 -> 右子树
- 在中序遍历中,根节点左边的元素属于左子树,右边的元素属于右子树
2. 构建二叉树
- 确定根节点:从后序遍历的最后一个元素得到根节点
- 划分子树:
- 在中序遍历中找到根节点位置
- 根据根节点位置,将中序序列分为左子树和右子树两部分
- 根据左子树大小,同样可以在后序序列中划分出左右子树部分
- 递归构建:
- 对左右子树分别递归应用上述过程
- 递归终止条件是子树为空
3. 层序遍历
-
使用队列进行广度优先搜索(BFS)
-
先将根节点入队
-
循环处理队列中的节点:
- 取出队首节点并输出
- 将其左右子节点(如果存在)加入队列
-
直到队列为空,完成层序遍历