由中序遍历和后序遍历还原二叉树_二叉树的中序列

由中序遍历和后序遍历还原二叉树_二叉树的中序列二叉树的前序遍历、中序遍历和后序遍历之间还原二叉树1、概念(1)前序遍历   a、访问根节点;b、前序遍历左子树;c、前序遍历右子树。(2)中序遍历   a、中序遍历左子树;b、访问根节点;c、中序遍历右子树。(3)后序遍历   a、后序遍历左子树;b、后续遍历右子树;c、访问根节点。2、前序遍历和中序遍历还原二叉树思想如下:  a、根据前序遍历结果,第一个元素为二叉树的根结…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

二叉树的前序遍历、中序遍历和后序遍历之间还原二叉树

1、概念

(1)前序遍历

      a、访问根节点;b、前序遍历左子树;c、前序遍历右子树。

(2)中序遍历

      a、中序遍历左子树;b、访问根节点;c、中序遍历右子树。

(3)后序遍历

      a、后序遍历左子树;b、后续遍历右子树;c、访问根节点。

2、前序遍历和中序遍历还原二叉树

思想如下:

    a、根据前序遍历结果,第一个元素为二叉树的根结点;

    b、观察中序遍历结果,根结点左侧的为左子树,若左子树根结点前(后)再无任何元素,则左(右)子树的左分支为空;根结点右侧的为右子树,若右子树根结点前(后)再无任何元素,则左(右)子树的左分支为空;

    c、上面的过程是递归的。先找到当前树的根结点,然后划分为左右子树,再进入左子树重复上面的过程,最后进入右子树重复上面的过程,最终还原一棵树。

例:

    已知前序遍历:ABDHIEJKCFLMGNO

           中序遍历:HDIBJEKALFMCNGO

由中序遍历和后序遍历还原二叉树_二叉树的中序列

按照上述步骤先画出二叉树,然后在进行求解后序遍历结果。结果为:HIDJKEBLMFNOGCA

练习:

1、前序遍历:GDAFEMHZ

      中序遍历:ADEFGHMZ

    求得后序遍历结果为:AEFDHZMG

2序遍历:ADCEFGHB

      中序遍历:CDFEGHAB

    求得后序遍历结果为:CFHGEDBA

3、中序遍历和后序遍历还原二叉树

思想如下:

    a、根据后序遍历结果,最后一个元素为二叉树的根结点;

    b、观察中序遍历结果,其中根结点左侧为左子树,若左子树根结点前(后)再无任何元素,则左(右)子树的左分支为空;其中根结点右侧为右子树,若右子树根结点前(后)再无任何元素,则左(右)子树的左分支为空;

    c、上面的过程是递归的。先根据后序遍历结果找根结点,根结点左侧为左子树,右侧为右子树,再进入左子树重复上面的过程,最后进入右子树重复上面的过程,最终还原一棵树。

例:

    已知

中序遍历:HDIBJEKALFMCNGO

后序遍历:

HIDJKEBLMFNOGCA

         

由中序遍历和后序遍历还原二叉树_二叉树的中序列

按照上述步骤先画出二叉树,然后在进行求解前序遍历结果。结果为:

ABDHIEJKCFLMGNO

练习:可参考前序遍历和中序遍历的练习

4、前序遍历和后序遍历还原二叉树

已知前序和中序,后序和中序遍历序列之后,可以唯一确定一棵二叉树。但是,只知道前序和后序遍历序列,是无法知道哪个结点是左子树还算右子树。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193915.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • .htaccess文件中RewriteCond详解

    .htaccess文件中RewriteCond详解Apache中RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结构,这次我终于算大概知道它的意思了RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。复制代码代码如下:…

    2022年5月25日
    35
  • CListCtrl详细使用方法

    CListCtrl详细使用方法以下未经说明,listctrl默认view风格为report相关类及处理函数MFC:CListCtrl类SDK:以“ListView_”开头的一些宏。如ListView_InsertColumnCListCtrl风格LVS_ICON:为每个item显示大图标LVS_SMALLICON:为每个item显示小图标LVS_LIST:显示一列带有小图标的i

    2022年6月23日
    27
  • CreatePipe、CreateProcess函数

    CreatePipe、CreateProcess函数0x01.CreatePipe函数管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。一个进程在向管道写入数据后,另一进程就可以从管道的另一端将其读取出来。匿名管道(AnonymousPipes)是在父进程和子进程间单向传输数据的一种未命名的管道,只能在本地计算机中使用,而不可用于网络间的通信。先详细介绍一下管道,这里以匿名管道为

    2022年7月26日
    17
  • C语言 函数指针和指针函数及Main()函数

    C语言 函数指针和指针函数及Main()函数正文先来看看两者的定义以及说明。指针函数定义指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。声明格式为:类型标识符*函数名(参数表)这似乎并不难理解,再进一步描述一下。看看下面这个函数声明:intfun(intx,inty);这种函数应该都很熟悉,其实就是一个函数,然后返回值是一个int类型,…

    2022年6月22日
    24
  • STUN详解

    STUN详解STUN是一个简单的客户端-服务器协议。客户端发送一个请求到一台服务器,而服务器返回一个响应。有两种类型的请求:绑定请求(通过UDP发送)和共享密钥请求(发送TLS(通过TCP))。共享秘密请求服务器返回一个临时的用户名和密码。此用户名和密码用于在随后的绑定请求和绑定响应,身份验证和消息完整性的目的。STUN客户和STUN服务器之间可能有一个或多个NAT。

    2022年7月17日
    42
  • JS 显示时间与倒计时练习

    JS 显示时间与倒计时练习

    2021年9月17日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号