1,给出一个实现代码:
#include <stdio.h>
#include <string.h>
void outputPro(char* pre, char* ord)
{
int len = strlen(pre);
if (len != strlen(ord))
{
printf("input error!\n");
return;
}
if (len == 0)
{
return;
}
if (len == 1)
{
printf("%c ", *pre);
return;
}
else
{
char* preLeft;
char* preRight;
char* ordLeft;
char* ordRight;
char* ordTmp = ord;
char* preTmp = pre;
char tmp = *pre;
while (*ord != tmp)
{
ord++;
*pre = *(pre + 1);
pre++;
}
*pre = '\0';
preLeft = preTmp;
preRight = pre + 1;
*ord = '\0';
ordLeft = ordTmp;
ordRight = ord + 1;
outputPro(preLeft, ordLeft);
outputPro(preRight, ordRight);
/*
printf("%s\n", preLeft);
printf("%s\n", preRight);
printf("%s\n", ordLeft);
printf("%s\n", ordRight);
*/
printf("%c ", tmp);
return;
}
}
int main()
{
char pre[] = "abcdef";
char ord[] = "abcedf";
outputPro(pre, ord);
return 0;
}
分享到:
相关推荐
* 已知二叉树前序和中序,求后序 * @param pre * @param mid * @param last * @param i */ public static int i =0;//i:表示要插入后序序列的位置对于生成的后序序列,应该从最后位置开始写, // 所以...
给定二叉树前序和中序求后序 序列中的字符不重复
一、实验目的 1、掌握二叉树的基本概念,链表描述方法;遍历方法。 二、实验内容 1、 创建二叉树类。二叉树的存储结构使用...4、 接收键盘录入的二叉树前序序列和中序序列(各元素各不相同),输出该二叉树的后序序列。
给定二叉树的前序和中序序列,设计算法输出它的后序序列。 算法设计: 给定二叉树的前序和中序序列,输出它的后序序列。 数据输入: 由文件input.txt 提供输入数据。第1行是二叉树的前序序列,第2行是中序序列(序列...
题目要求根据给定的前序遍历序列和中序遍历序列来构建二叉树,并求出后序遍历序列。具体实现步骤如下: 1. **构建二叉树**:首先读取输入文件中的前序遍历序列和中序遍历序列,通过递归的方式构建二叉树。在前序...
前序中序和中序后序 递归构建二叉树(检测输入序列的合法性)和二叉树的动态打印 前序中序和中序后序 递归构建二叉树(检测输入序列的合法性)和二叉树的动态打印 前序中序和中序后序 递归构建二叉树(检测输入序列...
本文将深入探讨三种基本的树遍历方法:前序遍历(Preorder Traversal)、中序遍历(Inorder Traversal)和后序遍历(Postorder Traversal),并通过给定的代码示例进一步解析这些概念。 ### 前序遍历(Preorder ...
二叉树遍历是访问二叉树中所有节点的一种方法,通常有三种主要的遍历策略:前序遍历、中序遍历和后序遍历。这些遍历方式在C语言编程中尤为重要,因为它们是理解和实现数据结构算法的基础。 **前序遍历(Preorder ...
在计算机科学中,二叉树是一种特殊的图结构,其中每个节点最多有两个子节点,通常...二叉树的建立则可以根据不同的输入序列(如前序、中序或后序)来完成。了解和掌握这些基本操作对于理解和实现更复杂的算法至关重要。
通过找到这个分隔点,我们可以确定左子树和右子树的中序序列,然后对这两个序列分别进行同样的操作,直到所有节点都被处理。这个过程可以用递归的方式来实现。 类似地,如果给定后序和中序遍历的结果,也可以重构...
### 有前序中序求后序遍历 在数据结构的学习中,二叉树的遍历是非常重要的概念之一。二叉树的遍历方法主要包括三种:前序遍历、中序遍历以及后序遍历。每种遍历方式都有其独特的应用场景,而在实际编程中,有时候...
C++程序,它能根据输入的二叉树中序和后序序列来构造该二叉树T,并能输出T的高度、2度结点的个数并能判断T是否为二叉搜索树(若是输出Yes;否则输出No)。还能输出T的前序序列,并且每个结点后面加上用圆括号括起...
"前序中序求后序"就是一种常见的二叉树遍历问题,它涉及到三种主要的遍历方式:前序遍历、中序遍历和后序遍历。在C语言中,这些问题通常通过递归函数来解决,而无需构建二叉链表结构。 前序遍历(Preorder ...
对于已知的前序遍历(P遍历)和中序遍历(I遍历),我们可以通过以下步骤打印出后序遍历(H遍历): 1. **初始化**:创建一个空栈,记录当前中序遍历中的位置(初始为0)。 2. **匹配前序遍历**:遍历P遍历,每遇到...
二叉树的遍历、深度计算以及通过前序和中序序列还原二叉树是理解和操作二叉树的关键概念。 1. **深度优先遍历**(Depth-First Search, DFS) - **递归方式**:通常包括前序遍历(根-左-右)、中序遍历(左-根-右)...
已知一棵二叉树的前序和中序序列,试设计完成下列任务的一个算法: (1)构造一棵二叉树; (2)证明构造正确(即分别以前序和中序遍历该树,将得到的结果与给出的序列进行比较)。 (3)对该二叉树进行后序遍历,...
本篇文章将深入探讨二叉树的建立以及前序、中序和后序遍历的方法。 首先,我们要理解如何建立一个二叉树。二叉树的构建通常通过递归或迭代两种方式实现。递归方法是基于树的分治思想,将大问题分解为小问题来解决。...
假设我们已知二叉树的前序遍历序列和中序遍历序列,现在需要推导出后序遍历序列。这里通过一个具体的例子来讲解整个过程: **例:** - 前序遍历: GDAFEMHZ - 中序遍历: ADEFGHMZ **画树求法:** 1. **确定根节点*...
- 中序遍历给出了所有左子树的节点和所有右子树的节点的顺序。 结合这两个遍历,我们可以重建二叉树的结构。具体步骤如下: 1. 从前序遍历中找到第一个元素,它是根节点。 2. 在中序遍历中找到该根节点,将中序遍历...