本次笔记内容:
练习题-TTA.1 题意理解
练习题-TTA.2 核心算法

文章目录

  • 题意理解
  • 根据Push与Pop直接得出先序、中序数组
  • 根据pre和in生成post
  • C实现

题意理解

先来回忆非递归中序遍历:

  • Push的顺序为先序遍历;
  • Pop的顺序给出中序遍历。

题意:根据一棵树的先序遍历Push与Pop内容,输出这棵树的先序、中序、后序遍历数组。

提示:不需要真正建立一棵树。

根据Push与Pop直接得出先序、中序数组

如上图右侧,6为数组长度,在程序实现中,定义两个数组pre(先序遍历数组)和in(中序遍历数组)。当然,还需要再开一个数组作为堆栈。

根据pre和in生成post

post用于记录后序数组。

  • 在先序遍历中,根结点一定是第一个被访问到的;
  • 在后序遍历中,根结点一定是最后一个被访问到的;
  • 因此post的最后一个元素就是pre的第一个元素,之后便可以分而治之。

如上图,可以通过中序遍历数组in来确定左右子树。这是一个分而治之的递归问题。

C实现

void solve(int preL, int inL, int postL, int n)
{if (n == 0)return;if (n == 1){post[postL] = pre[preL];return;}// 上面的部分最后设计出,解决最小的caseroot = pre[preL];post[postL + n - 1] = root;for (i = 0; i < n; i++)if (in[inL + i] == root)break;                                    // 在in中找根结点L = i;                                            // 找到根结点后,左边有多少元素R = n - L - 1;                                    // 找到根结点后,右边有多少元素solve(preL + 1, inL, postL, L);                   // 左子树的元素头结点在各数组中的位置solve(preL + L + 1 +, inL + L + 1, postL + L, R); //右子树同理
}

【数据结构笔记26】根据一棵树的先序/中序遍历Push与Pop内容,输出这棵树的先序、中序、后序遍历数组(不需要真的建立出树)相关推荐

  1. 考研复习之数据结构笔记(五)栈和队列(上)(包含栈的相关内容)

    目录 一.栈的定义 1.1相关概念与特点 (1)相关概念 (2)相关特点 (3)栈的运算 (4)顺序栈和链式栈的区别 二.栈的表示和实现 2.1顺序栈的表示和实现 (1)结构体定义 (2)建立空栈 ( ...

  2. 数据结构笔记(王道考研) 第五章:树和二叉树

    大部分内容基于中国大学MOOC的2021考研数据结构课程所做的笔记,该课属于付费课程(不过盗版网盘资源也不难找...).后续又根据23年考研的大纲对内容做了一些调整,将二叉排序树和平衡二叉树的内容挪到 ...

  3. 天勤数据结构笔记——第六章 树与二叉树(代码)

    二叉树的链式存储结构 typedef struct BTNode{char data;struct BTNode *lchild;struct BTNode *rchild; }BTNode; 先序遍 ...

  4. 数据结构笔记(期末复习,持续更新)

    目录 一.绪论 1.数据结构基本概念 2.算法定义与特征 二.线性表 1.线性表的定义 2.顺序表的存储结构 3.链式存储结构 三.栈和队列 1.栈的基本概念 2.队列的基本概念 3.循环队列 四.字 ...

  5. 数据结构笔记(考研)

    目录 一.算法概述 算法的定义: 基本特性: 算法的基本要求 存储结构与逻辑结构 二.数据的逻辑结构 集合结构 线性结构 线性表 广义表 顺序表 数组: 查找算法 栈 队列 单链表 循环链表 双链表 ...

  6. (王道408考研数据结构)第五章树-第三节1:二叉树遍历(先序、中序和后序)

    文章目录 一:二叉树遍历概述 二:二叉树深度优先遍历 (1)先序遍历-根左右(NLR) (2)中序遍历-左根右(LNR) (3)后序遍历-左右根(LRN) 总结:三种遍历方式动图演示 三:二叉树的层序 ...

  7. 树的基本概念和遍历规则 数据结构和算法 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)

    zsychanpin 博客园 首页 新随笔 联系 订阅 管理 树的基本概念和遍历规则 树的递归定义 树是n(n>0)个结点的有限集,这个集合满足下面条件:       ⑴有且仅有一个结点没有前驱 ...

  8. 数据结构笔记 —— 二叉树(前序、中序、后序遍历和查找)

    本篇博客是根据b站尚硅谷的数据结构教程,学习后写的学习笔记,本篇博客的重点在自己编写的代码注释和过程分析上 https://www.bilibili.com/video/BV1E4411H73v?p= ...

  9. 二叉树前中后序遍历+刷题【中】【数据结构/初阶/C语言实现】

    文章目录 1. 二叉树基础操作 1.1 二叉树遍历 1.1.1 前序遍历 前序遍历(Pre-Order Traversal) 1.1.2 中序遍历 中序遍历(In-Order Traversal) 1 ...

最新文章

  1. 海外web平台访问速度慢的原因之一
  2. html click事件 参数,vue 实现click同时传入事件对象和自定义参数
  3. 《剑指Offer》23:链表中环的入口节点
  4. MongoDB 计划从“Data Sprawl”中逃脱
  5. eclipse 使用 maven 无法编译 jsp 文件的问题
  6. php垃圾回收算法分代,PHP的垃圾回收机制代码实例讲解
  7. ftp安装包_【干货分享】原来cisco通过FTP,TFTP系统升级是这样做的?
  8. java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String
  9. linux initrd usb热插拔,8.3 发行注记 Red Hat Enterprise Linux 8 | Red Hat Customer Portal
  10. 那年学过的Java笔记一SE基础
  11. win11语言输入没反应怎么办 windows11语音输入没反应的解决方法
  12. 归类常用控件GroupBox、TabControl、Expander
  13. CAM350 10.5完美精减版
  14. postman9.12汉化
  15. Linux下rpm打包
  16. #多个基因批量cox 多因素回归cox univariate Adjust for age sex单个基因cox 回归分析 多因素 矫正年龄性别之后的cox回归分析 矫正年龄性别之后的cox生存分析
  17. 一些免费在线杀毒网址
  18. C语言函数定义和函数调用
  19. 计算机专业简介自我介绍,计算机专业自我介绍
  20. 第一章 初探Swing

热门文章

  1. 【C】输出乘法口诀表
  2. 异常问题解决Error:Execution failed for task ‘:app:processDebugManifest‘
  3. axios.all()解决并发请求的问题
  4. git 提示error setting certificate verify locations 解决方案
  5. Oracle shutdown immediate无法关闭数据库解决方法
  6. 如何在Android中使用Intent拨打电话?
  7. OpenCV-Python中的简单数字识别OCR
  8. Python退出命令-为什么要使用这么多?何时使用?
  9. java subset_Java中的TreeSet的subSet()方法 Java.util.TreeSet.subSet() - Break易站
  10. Win11如何添加过时硬件?Win11添加过时硬件的方法