1.已知前序中序求后序
procedure Solve(pre,mid:string);
var i:integer;
begin
if (pre='''') or (mid='''') then exit;
i:=pos(pre[1],mid);
solve(copy(pre,2,i),copy(mid,1,i-1));
solve(copy(pre,i+1,length(pre)-i),copy(mid,i+1,length(mid)-i));
post:=post+pre[1]; {加上根,递归结束后post即为后序遍历}
end;
2.已知中序后序求前序
procedure Solve(mid,post:string);
var i:integer;
begin
if (mid='''') or (post='''') then exit;
i:=pos(post[length(post)],mid);
pre:=pre+post[length(post)]; {加上根,递归结束后pre即为前序遍历}
solve(copy(mid,1,I-1),copy(post,1,I-1));
solve(copy(mid,I+1,length(mid)-I),copy(post,I,length(post)-i));
end;
3.已知前序后序求中序的一种
function ok(s1,s2:string):boolean;
var i,l:integer; p:boolean;
begin
ok:=true;
l:=length(s1);
for i:=1 to l do begin
p:=false;
for j:=1 to l do
if s1[i]=s2[j] then p:=true;
if not p then begin ok:=false;exit;end;
end;
end;
procedure solve(pre,post:string);
var i:integer;
begin
if (pre='''') or (post='''') then exit;
i:=0;
repeat
inc(i);
until ok(copy(pre,2,i),copy(post,1,i));
solve(copy(pre,2,i),copy(post,1,i));
midstr:=midstr+pre[1];
solve(copy(pre,i+2,length(pre)-i-1),copy(post,i+1,length(post)-i-1));
end;
分享到:
相关推荐
知识点六:使用栈来实现树遍历 栈可以用来实现树遍历,通过将节点push到栈中,然后pop出栈,最后访问节点的值。栈实现可以避免递归的使用,提高算法的效率。 知识点七:递归思想的理解 递归思想是指将问题分解成...
### Java遍历JSON树知识点详解 #### 一、前言 在处理Web应用程序中的数据时,JSON(JavaScript Object Notation)是一种非常常见的数据格式。它轻量级且易于读写,因此广泛应用于前后端的数据交互中。对于Java...
根据给定的信息,本文将详细解释“树的三种遍历”这一重要的数据结构概念,并结合提供的代码示例来深入分析前序遍历、中序遍历和后序遍历的具体实现方式及其应用场景。 ### 一、树的遍历概述 在计算机科学中,树是...
本资源主要讲述了数据结构树和二叉树遍历的相关知识点,包括二叉树的基本概念、二叉树遍历的六种方案、先序、中序、后序遍历算法的实现、线索二叉树的概念等内容。 二叉树的基本概念 二叉树是一种特殊的树形结构,...
- **先序遍历**:按照根节点→左子树→右子树的顺序遍历。 - **中序遍历**:按照左子树→根节点→右子树的顺序遍历。 - **后序遍历**:按照左子树→右子树→根节点的顺序遍历。 3. **二叉树的非递归遍历**: -...
TreeView控件是Windows Forms和.NET Framework提供的一种用户界面元素,它以树形结构显示数据,每个节点可以有子节点,形成多级结构。通过自定义节点,开发者可以创建具有丰富交互功能的界面,如展开/折叠节点、选择...
- **中序遍历**:首先遍历左子树,然后访问根节点,最后遍历右子树。中序遍历的结果通常反映了一个有序序列,比如对于二叉搜索树,中序遍历可以得到一个升序列表。 - **先序遍历**:首先访问根节点,然后遍历左...
### 遍历二叉树的六种算法 在计算机科学中,二叉树是一种重要的数据结构,广泛应用于各种算法和程序设计中。对于二叉树的遍历,主要有三种基本方式:先序遍历、中序遍历和后序遍历。除了这三种基本的递归遍历方法外...
在数据结构第六章大作业中,你可能被要求深入理解和实现二叉树的遍历方法,这通常包括前序遍历、中序遍历和后序遍历。以下是对这些遍历方法的详细解释。 **前序遍历(Preorder Traversal)**: 前序遍历的过程是先...
本课程设计的任务是构造一棵树并输入数据,编写三个函数,分别是树的前序递归遍历算法、树的后序递归遍历算法、树的非递归中序遍历算法。在主程序中调用这三个函数进行树的遍历,观察用不同的遍历方法输出的数据的...
从中序遍历结果来看,我们可以更清晰地了解二叉树内部的层次关系,因为中序遍历会先遍历左子树,再访问根节点,最后遍历右子树。 #### 五、后序遍历 **定义**:后序遍历的顺序是“左-右-根”,即先递归地访问左...
例如,`os.listdir()`用于获取指定路径下的所有文件和目录名,`os.path.join()`用于构建完整的文件或目录路径,`os.walk()`则可以递归地遍历目录树。 3. **requests模块** `requests`是Python的一个第三方库,用于...
遍历二叉树程序,亲自调试,注释详尽,有不懂的随时和大家交流,希望能帮到大家~
实验六主要关注的是二叉树的递归遍历及其应用。二叉树是一种重要的数据结构,在计算机科学中广泛用于表示和处理层次关系。这个实验旨在让学生深入理解二叉树的逻辑结构特性以及其基本操作,特别是通过递归方法来遍历...
中序遍历首先递归遍历左子树,然后访问根节点,最后递归遍历右子树。 #### 五、完整程序示例 下面是完整的C语言程序,实现了二叉树的创建与中序遍历: ```c #include #include typedef struct T_NODE { char ...
递归遍历是处理树形结构的一种有效方法,特别是在生成如菜单这样的层级数据时。在给定的标题和描述中,我们看到的是如何使用Java递归遍历来遍历和构建树形菜单。 首先,我们需要了解递归的基本概念。递归是一种函数...
#### 六、总结 通过上述介绍,我们了解到如何使用栈这种简单的线性结构来实现二叉树的先序、中序和后序遍历。这些方法不仅简单易懂,而且具有较好的通用性,适用于大多数基于二叉树的数据结构场景。通过理解和掌握...
- **InOrder()**:实现中序遍历,即先递归地遍历左子树,然后访问根节点,最后递归地遍历右子树。 - **PostOrder()**:实现后序遍历,即先递归地遍历左子树和右子树,最后访问根节点。 - **Levelorder()**:实现广度...
与前序遍历类似,这段代码同样采用递归的方式实现,先遍历左子树,然后访问当前节点,最后遍历右子树。 #### 五、后序遍历 后序遍历的顺序是“左子树→右子树→根”。具体步骤如下: 1. 遍历左子树; 2. 遍历右子树...
- **前序遍历**:访问根节点 -> 遍历左子树 -> 遍历右子树。 - **中序遍历**:遍历左子树 -> 访问根节点 -> 遍历右子树。 - **后序遍历**:遍历左子树 -> 遍历右子树 -> 访问根节点。 接下来,我们将基于给定的...