首页 > 其他分享 >数据结构 二叉树 前 中 后 序列

数据结构 二叉树 前 中 后 序列

时间:2024-07-26 16:51:51浏览次数:9  
标签:左子 遍历 左叶 中序 右子 二叉树 序列 数据结构 节点

简单二叉树的 遍历

如果看完还是不太懂 就观看速成视频
https://www.bilibili.com/video/BV1Ub4y147Zv/?spm_id_from=333.337.search-card.all.click&vd_source=e5f8765d50fb89ef04eb150bd76075b5
引用资料文献链接放到篇尾

简单术语解释

  1. 节点 (Node):二叉树中的一个元素,包含值和指向子节点的引用

  2. 根(Root):二叉树的顶部节点, 没有父节点。(一般时最上的单个节点)

  3. 叶(Leaf): 没有子节点的节点。 (一般时最底下的节点)

  4. 左子树/右子树(Left/Right Subtree):分别位于一个节点的左边和右边的子树

  5. 父节点(Parent):节点的上一级节点。

  6. 子节点(Child):节点的下一级节点。
    image

前序遍历

前序遍历 根节点 第一个
根节点左子树 依次记录 直到达到 左子树,途中的内部节点都写记录

要诀: ——根节点——>左子树的节点——>直到左子树的叶——>叶的 父节点的 右子树的 子节点

前序遍历结果 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

image

拆分解析:倾斜数字 是加入前序的值
根节点: 1——
子节点往下

左子树的节点: 2——
子节点往下

左子树的节点: 3——
子节点往下

左子树的节点同时也是叶: 4——
往上回到 父节点 3 发现 右子树的节点 5 往下

右子树的节点同时也是叶: 5——
往上回到父节点 3 发现左右子树的节点都已遍历完
往上回到父节点 2 发现右子树的节点 6 往下

右子树的节点 :6——
子节点往下

左子树的节点 同时也是叶 :7——
往上回到父节点 6 发现右子树的节点 8 往下

右子树的节点 同时也是叶 :8——
往上回到父节点 6 遍历完
往上回到父节点 2 遍历完
往上回到根节点 1 往右边遍历 重复上面操作

中序遍历

中序遍历 根节点 在中间

中序和前序不同 前序是 从上往下记录 但是中序是从 左叶节点往上记录

左叶节点:是从根节点开始,一直左子树 直到 没有左子树

根节点左子树 途中不用记录 直到达到 左子树,才开始记录,可以有右子树的节点

要诀: 左叶 节点——>叶 父节点——>右子树的节点 的 左叶 节点——>直到没有左叶节点

中序遍历结果 4,3,5,2,7,6,8,1,11,10,12,9,14,13,15

红色数字的是第几个访问到的

image

拆分解析:倾斜数字 是加入中序的值

左叶节点: 4——
往上回到 父节点 3

父节点:3——
发现 右子树的节点 5 没有记录 右子树的节点 5开始 往下

右子树的节点同时也是叶: 5——
往上回到父节点 3 发现左右子树的节点都已遍历完

往上回到父节点: 2——
发现 右子树的节点 6 没有记录 右子树的节点 6开始 往下

左叶节点:7——
往上回到 父节点 6

父节点: 6——
发现 右子树的节点 8 没有记录 右子树的节点 8开始 往下

右子树的节点同时也是叶: 8——
往上回到父节点 6 发现左右子树的节点都已遍历完
往上回到父节点 2 发现左右子树的节点都已遍历完

返回父节点根节点: 1——

后序遍历

后序遍历 根节点 在后间

后序和中序很像都是从 左叶节点 往上记录 不同于中序的是 后序记录节点时必须是即没有子节点

根节点左子树 途中不用记录 直到达到 左子树,如果当前节点右子树节点则继续往下直到找到最左侧的

要诀: 左叶 节点——>叶的父节点的 右子树节点 的 左叶 节点——>直到没有左叶节点

后序遍历结果 4,5,3,7,8,6,2,11,12,10,14,15,13,9,1

红色数字的是第几个访问到的
image

拆分解析:倾斜数字 是加入后序的值

左叶节点: 4——
往上回到父节点: 3,发现存在子节点,往下

未发现子节点
右子树: 5——

往上回到父节点: 3,未发现子节点
父节点: 3——

往上回到父节点: 2,发现存在子节点,往下
右子树: 6 发现子节点,往下

未发现节点
左子树节点:7——
往上回到父节点: 6,发现存在子节点 往下

未发现节点
右子树节点:8——

往上回到父节点: 6,未发现子节点
父节点: 6——

往上回到父节点: 2,未发现子节点
父节点: 2——

将右侧 按照上述 进行修改 最后再加入
根节点 1 ——

资料文献

博客园 作者:ACHanHan 标题:二叉树的遍历及例题 有附代码实现:
https://www.cnblogs.com/AC673523745/p/13991094.html
Csdn 作者:白菜喵 标题:彻底弄懂二叉树的先序、中序、后序三种遍历与做题 有比较复杂的(如:只有一个节点单向 左/右二叉树,附上 前中后序 答案参考))
(因网站限制需要登陆关注才能看完,(如果不想登陆也可以看一下的,我就没登陆))
https://blog.csdn.net/eebaicai/article/details/89788098
速成视频 这个是真的快,看一下基本可以懂七七八八
https://www.bilibili.com/video/BV1Ub4y147Zv/?spm_id_from=333.337.search-card.all.click&vd_source=e5f8765d50fb89ef04eb150bd76075b5

标签:左子,遍历,左叶,中序,右子,二叉树,序列,数据结构,节点
From: https://www.cnblogs.com/Luo-Xi/p/18325711

相关文章

  • 【数据结构与算法】快速排序万字全攻略:hoare版本、挖坑法、前后指针法、优化版、非递
          ......
  • 软考-软件设计师(3)-数据结构与算法:树、图、队列、查找算法、排序算法、霍夫曼编码/
    场景软考-软件设计师-数据结构与算法模块高频考点整理。以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。注:博客:霸道流氓气质-CSDN博客实现知识点树:节点的度、树的度、深度、高度、满二叉树、完全二叉树、平衡二叉树、B树、二叉排序树节点......
  • 【秋招 Learning_note】| 拿捏二叉树考点!(一)
    文章目录引言二叉树的性质性质一结点数与层数的关系性质二结点数与层数的关系性质三叶子节点与度为2的节点关系性质四深度与节点数的关系两种特殊的二叉树满二叉树完全二叉树二叉树的遍历顺序前序遍历中序遍历后序遍历常考内容及详细解法题型一、基本概念与性质题......
  • 算法与数据结构 -随笔
    1.LinkedList1)Buildthelist2)Sortthelist3)Lookupsomeiteminthelist4)Insertionanddeletioninthelist5) Reversethelist6)JousephproblemWeshouldn'tlimitourselvestoonlymoveonesinglestepbyusing......
  • 【数据结构】单链表的增删改查
    介绍链表是有序的列表,但是它在内存中是如下存储的:①链表以节点的方式进行存储,是链式存储的②每个节点包含data域、next域:指向下一节点③链表的各个节点不一定是连续存放的④链表分为有头节点的链表和没有头节点的链表 head节点1.不存放具体数据2.作用就是表示......
  • 在整数列表中查找最长的重复非重叠整数序列
    我需要一个有效的代码来查找整数列表中最长的非重叠整数序列。我到处寻找,甚至询问了GPT4o,但没有找到解决这个相当简单但有趣的问题的好方法。如果有人可以帮助我改进它并检查它的准确性,我真的很感激!提前致谢。这是我到目前为止所得到的。这是非常低效和缓慢的,但......
  • 山东大学数据结构与算法实验10堆及其应用(堆的操作/霍夫曼编码)
    A : 堆的操作题目描述创建 最小堆类。最小堆的存储结构使用 数组。提供操作:插入、删除、初始化。题目第一个操作是建堆操作,接下来是对堆的插入和删除操作,插入和删除都在建好的堆上操作。输入输出格式输入第一行一个数n(n<=5000),代表堆的大小。第二行n个数,代表堆的......
  • 代码随想录算法训练营第45天 | 子序列入门
    300.最长递增子序列https://leetcode.cn/problems/longest-increasing-subsequence/代码随想录https://programmercarl.com/0300.最长上升子序列.html674.最长连续递增序列https://leetcode.cn/problems/longest-continuous-increasing-subsequence/description/代码随想录......
  • php--序列化与反序列化
    ......
  • leetcode103. 二叉树的锯齿形层序遍历,简单易懂附代码详解
    leetcode103.二叉树的锯齿形层序遍历给你二叉树的根节点root,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。示例1:输入:root=[3,9,20,null,null,15,7]输出:[[3],[20,9],[15,7]]示例2:输入:root=[1]输出:[[1......