一百道编程题|09 前序遍历

目录

一、明确题目要求

二、核心思路 - 递归与序列划分

三、代码实现要点

四、知识点

二叉树的遍历方式

         递归算法


一百道编程题|09 前序遍历_第1张图片

一、明确题目要求

       题目给出一棵二叉树的中序与后序排列,要求求出它的先序排列。树结点用不同的大写字母表示,长度≤8。

二、核心思路 - 递归与序列划分

       确定根节点:后序序列的最后一个元素是根节点。

       划分左右子树:以根节点为界,将中序序列划分为左右子树的中序序列。再根据中序序列的划分,在后序序列中找到对应的左右子树的后序序列。

        递归求解:对左右子树使用递归,不断重复上述过程,直至处理完所有子树,得到整棵二叉树的先序序列。

一百道编程题|09 前序遍历_第2张图片

三、代码实现要点

       递归函数定义:定义递归函数dfs,参数为中序和后序序列的起始和结束下标。

       递归出口:当子树区间不合法时,返回。

       确定根节点并输出:后序序列的最后一个元素是根节点,输出该根节点。

       寻找根节点在中序序列中的位置:找到根节点在中序序列中的位置,以此划分左右子树。

       递归处理左右子树:根据划分的结果,分别递归调用dfs函数处理左右子树。

一百道编程题|09 前序遍历_第3张图片

    四、知识点

    二叉树的遍历方式

           中序遍历:顺序为左子树、根节点、右子树。

           后序遍历:顺序为左子树、右子树、根节点。

           前序遍历:顺序为根节点、左子树、右子树。

    递归算法

            递归思想:将大问题分解为小问题。

            递归函数设计:明确函数参数、功能及终止条件。本题中,递归函数 dfs 处理中序和后序遍历序列范围,构建并输出子树前序遍历序列,终止条件为子树为空。

    你可能感兴趣的:(算法,数据结构)