hiho 10 二叉树的遍历

原创 2015年11月19日 15:46:50

问题描述

二叉树有三种遍历方式, 分别是前序,中序和后序遍历,这里区分的依据是根节点访问的先后。比如前序就是最先访问根节点,然后左子树右子树。中序遍历是指先左子树,根节点,右子树。后序是左子树, 右子树, 根节点。
举例来说
这里写图片描述
前序结果为: ABDEGHCFIJ
中序结果为:DBGEHACIJF
后序结果为:DGHEBJIFCA
而且已知中序遍历和另外任意一种遍历方式,就可以还原出整个树。
现已知前序和中序遍历,求后序遍历。

解决方法

前序遍历为 root + 左子树 +右子树
中序遍历为 左子树 + root + 右子树
因此前序遍历的第一个元素为root, 只用root可求出中序遍历的左右子树,由于左右子树长度是相同的, 因此也可求出前序遍历的左右子树。

#include <cstring>
#include <cstdio>
enum {maxn = 32};
char front[maxn];
char mid[maxn];
void printLast(char * front, char* mid, int len)
{
    if (len == 0)
        return;

    int leftLen = 0;
    for (; mid[leftLen]!= *front; leftLen++)
        ;
    printLast(front+1, mid, leftLen);
    printLast(front+1+leftLen, mid+1+leftLen, len-leftLen-1);
    printf("%c", *front);
}
int main()
{
    scanf("%s", front);
    scanf("%s", mid);
    int len = strlen(front);
    printLast(front, mid, len);
    printf("\n");
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

写了一个二叉树构造及中序遍历函数

// BTree.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include"stdlib.h" #include"malloc.h" #define ...
  • svap1
  • svap1
  • 2014年05月02日 18:21
  • 1073

4-9 二叉树的遍历 (25分)

本题要求给定二叉树的4种遍历。 函数接口定义:void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); ...
  • wanmeiwushang
  • wanmeiwushang
  • 2016年07月13日 22:12
  • 3362

二叉树的三种遍历练习题

一 二叉树的基础问题
  • XSF50717
  • XSF50717
  • 2014年10月11日 20:10
  • 5580

二叉树之层次遍历

下面是对层次遍历的一个实例,如果对二叉树不太了解请点击这里 任务要求:输入一棵二叉树,进行层次遍历,每个节点都按照从根节点到他的移动序列给出(L表示左,R表示右)。在输入中,每个节点的左右括号之间没有...
  • luomingjun12315
  • luomingjun12315
  • 2015年04月23日 09:16
  • 14161

4-9 二叉树的遍历 (25分)

4-9 二叉树的遍历   (25分) 本题要求给定二叉树的4种遍历。 函数接口定义: void InorderTraversal( BinTree BT ); void PreorderTrav...
  • qq_26946745
  • qq_26946745
  • 2016年07月20日 18:11
  • 1386

看懂二叉树的三种遍历

二叉树的遍历分为以下三种: 先序遍历:遍历顺序规则为【根左右】 中序遍历:遍历顺序规则为【左根右】 后序遍历:遍历顺序规则为【左右根】 什么是【根左右】?就是先遍历根,再遍历左孩子,最后遍历右...
  • soundwave_
  • soundwave_
  • 2016年11月10日 21:08
  • 10067

图解二叉树及二叉树遍历

二叉树及二叉树遍历 完全二叉树 二叉树的遍历 遍历的性质 1、完全二叉树 对于一棵具有n个节点的二叉树(按层序编号),如果编号为i的节点与同样深度的满二叉树中编号为i的节点在二叉树的位置完全相同,...
  • xiaotan2011929
  • xiaotan2011929
  • 2017年03月11日 20:53
  • 1579

关于二叉树的几种遍历方法

先说说二叉树的存储结构,跟很多其它模型一样,也有顺序和链式两种方式。前者虽然使用简单,但是存在浪费空间的问题,举个例子,下图的二叉树,用顺序的方式存储(0表示空,没有子树)是: 二叉树就是每个结点最...
  • pony_maggie
  • pony_maggie
  • 2014年08月05日 20:57
  • 190636

算法学习笔记 二叉树和图遍历—深搜 DFS 与广搜 BFS

图的深搜与广搜 马上又要秋招了,赶紧复习下基础知识。这里复习下二叉树、图的深搜与广搜。从图的遍历说起,图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Bre...
  • queuelovestack
  • queuelovestack
  • 2015年04月08日 08:50
  • 1092

java代码实现二叉树的遍历

一、二叉树的定义: 二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重...
  • qq_33275597
  • qq_33275597
  • 2016年10月08日 17:56
  • 1433
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hiho 10 二叉树的遍历
举报原因:
原因补充:

(最多只允许输入30个字)