当前位置: 首页 > news >正文

链式二叉树的基本操作——遍历

本文笔者将带领读者一起学习链式二叉树的一些基本语法,至于更难一些的插入删除等,笔者将在后续C++更新后再次详细带领大家学习。

首先,在进行二叉树之前,我们需要一颗二叉树,而二叉树的初始化现阶段实现不太现实,故笔者在此处手动建一个二叉树:由于现在不是堆了,所以用数组显然是不行,这时候我们直接用链表存储即可,也就是链式二叉树:

如上图,首先初始化了一个节点,然后两个指针分别指向左子树和右子树,然后手动赋值即可,最终的二叉树长这样:

        1
       / \
      2   4
     /   / \
    3   5   6
         \
          7

下面我们只对这个二叉树进行讨论,首先进行遍历,二叉树的遍历有三次,分别是:前序遍历,中序遍历,后序遍历。

前序遍历:根节点,左子树,右子树。由于三种遍历方式本质一样,笔者在此着重讲一下第一种遍历方式。首先,根据这棵树,我们可以借用递归的思想,不过这里有一个易错点,那就是左(右)子树是空节点时仍然存在这种情况,这里笔者记作N,一定不能忽略这种情况,比如笔者创建的这棵树,如果按照前序遍历,那就是1 (2 (3 N N) N)( 4 (5 N (7 N N))( 6 N N))不难理解,这其实是一种递归的思想,不断推进,直到遇到了N(空结点),剩下情况一直保证先根在左最后右,这是逻辑角度,下面从代码的角度来分析:

这就是一个前序遍历的代码实现,其实不难理解,这就是用了递归思想,函数栈帧的知识,因为本质上就是栈帧的调用,在具体进行时,首先需要让左子树处理完,在这之后才能进行右子树,每个二叉树都是如此进行,具体可以看下图:

左图有些问题,不过无伤大雅,思路就是如此,最后再main函数调用一下即可:

中序遍历:左子树,根节点,右子树

        1
       /  \
      2   4
     /    /    \
    3   5   6
          \
           7

中序遍历和前序遍历的情况基本一致,并无不同,中序遍历结果:((N 3 N) 2  N )1 ((N  5 (N 7 N )))4  (N 6 N))

代码自然也是类似的:

这里不作过多解释,相信读者都能理解。

后序遍历:左子树,右子树,根节点

N N 3 N 2 N N 7 N 5 N N 6 4 1
下面直接看代码:

到这里,三种遍历方式其实已经结束,最后,笔者给大家看一下打印的结果: 

ok,到这里笔者就结束了,笔者把源码放在GitHub上了,希望大家给一个星星:

https://github.com/z-yi-han/Fundamentals-of-Data-Struct/tree/main/Tree

笔者还会持续更新,希望大家支持,非常感谢各位读者


 

http://www.xdnf.cn/news/1311643.html

相关文章:

  • 实时计算 记录
  • 美国服务器环境下Windows容器工作负载基于指标的自动扩缩
  • 从盲区到全域:黎阳之光视频孪生+AI智能算法驱动智慧机场三维感知革命
  • 4.6 Vue 3 中的模板引用 (Template Refs)
  • CSS复习
  • Jenkins安装部署(Win11)和常见配置镜像加速
  • SysTick寄存器(嘀嗒定时器实现延时)
  • 要导入StandardScaler类进行数据标准化,请使用以下语句:
  • VS Code配置MinGW64编译ALGLIB库
  • 《C语言程序设计》笔记p10
  • 【数据分享】上市公司供应链成本分摊数据(2007-2024)
  • 【数据结构】-2- 泛型
  • leetcodehot100 矩阵置零
  • 基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
  • 谷歌手机刷机和面具ROOT保姆级别教程
  • 利用 Java 爬虫按图搜索淘宝商品(拍立淘)实战指南
  • 《解耦的艺术:Python 观察者模式在 GUI 与事件驱动中的实战》
  • cPanel Python 应用部署流程
  • 【自动化运维神器Ansible】Ansible逻辑运算符详解:构建复杂条件判断的核心工具
  • Scala面试题及详细答案100道(11-20)-- 函数式编程基础
  • PCIE EP 框架
  • C#单元测试(xUnit + Moq + coverlet.collector)
  • RK3568 NPU RKNN(四):RKNN-ToolKit2性能和内存评估
  • springboot集成websocket
  • SpringBoot 集成Ollama 本地大模型
  • RH134 访问网络附加存储知识点
  • 【图论】分层图 / 拆点
  • 计算机存储器分类和层次结构详解
  • PyTorch生成式人工智能——使用MusicGen生成音乐
  • 探索粒子世界:从基础理论到前沿应用与未来展望