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

数据结构,二叉树,前中后序遍历

         二叉树的种类

 

 最优二叉树

 

最优二叉树画法

  1. 排序
  2. 取最小两个值和,得到新值加入排序
  3. 重复1,2

        前序、中序和后序遍历是树形数据结构(如二叉树)中常用的遍历方式,用于按照特定顺序遍历树的节点。这些遍历方式在不同应用中有不同的用途。

以下是这些遍历方式的解释:

1. 前序遍历(Preorder Traversal):
    - 从根节点开始,按照「根节点 - 左子树 - 右子树」的顺序遍历树的节点。
    - 对于每个节点,先访问该节点,然后递归遍历左子树,最后递归遍历右子树。
    - 前序遍历可以用于复制整棵树。

函数方法:

void PREORDER(bitree *r)
{if(r==NULL) return;//空树返回printf("%c",r->data); //先访问当前节点PREORDER(r->lchild);   //再访问该节点的左子树PREORDER(r->rchild);   //最后访问该节点右子树
}

图像法: 看穿过环的顺序,确定前序遍历的顺序。

2. 中序遍历(Inorder Traversal):
    - 从根节点开始,按照「左子树 - 根节点 - 右子树」的顺序遍历树的节点。
    - 对于每个节点,先递归遍历左子树,然后访问该节点,最后递归遍历右子树。
    - 中序遍历在二叉搜索树中得到的结果是有序的。

void INORDER(bitree *r)
{if(r==NULL) return;//空树返回INORDER(r->lchild);   //先访问该节点的左子树printf("%c",r->data); //再访问当前节点INORDER(r->rchild);   //最后访问该节点右子树
}

图像法: 看穿过环的顺序,确定中序遍历的顺序。 

 

3. 后序遍历(Postorder Traversal):
    - 从根节点开始,按照「左子树 - 右子树 - 根节点」的顺序遍历树的节点。
    - 对于每个节点,先递归遍历左子树,然后递归遍历右子树,最后访问该节点。
    - 后序遍历常用于内存回收或资源释放等操作。

void POSTORDER(bitree *r)
{if(r==NULL) return;//空树返回POSTORDER(r->lchild);   //先访问该节点的左子树POSTORDER(r->rchild);   //最后访问该节点右子树printf("%c",r->data); //再访问当前节点}

  图像法: 看穿过环的顺序,确定后序遍历的顺序。 

        这些遍历方式都是深度优先遍历(Depth-First Traversal)的一种。深度优先遍历从根节点开始,尽可能深地访问树的分支,然后再回溯到其他分支。与之相对的是广度优先遍历(Breadth-First Traversal),它从根节点开始,按层级遍历树的节点。

http://www.lryc.cn/news/134697.html

相关文章:

  • 项目实战笔记2:硬技能(上)
  • 神经网络基础-神经网络补充概念-59-padding
  • 【开源免费】ChatGPT-Java版SDK重磅更新收获2.3k,支持插件模式、实现ChatGpt联网操作。
  • 情报与GPT技术大幅降低鱼叉攻击成本
  • Swift 周报 第三十五期
  • uni-app + SpringBoot +stomp 支持websocket 打包app
  • LeetCode--HOT100题(35)
  • idea插件grep console最佳实践
  • Android 12 源码分析 —— 应用层 二(SystemUI大体组织和启动过程)
  • 【C#】通用类型转换
  • 传统DNS、负载均衡服务发现框架与专业服务发现框架(Eurek、nacos)分析
  • js中数组常用操作函数
  • Windows、Mac、Linux端口占用解决
  • 企业文件透明加密软件——「天锐绿盾」数据防泄密管理软件系统
  • Postman接口自动化测试实例
  • 软件团队降本增效-构建人员评价体系
  • Python实现SSA智能麻雀搜索算法优化随机森林分类模型(RandomForestClassifier算法)项目实战
  • web JS高德地图标点、点聚合、自定义图标、自定义窗体信息、换肤等功能实现和高复用性组件封装教程
  • AlpacaFarm: A Simulation Framework for Methods that Learn from Human Feedback
  • 【Linux】Linux工具篇(yum、vim、gcc/g++、gdb、Makefile、git)
  • 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 5- 完成 Spring 容器对象的自动装配 -@Autowried
  • linux的http服务
  • Restful架构简单了解
  • conda常用命令
  • Linux:shell脚本:基础使用(6)《正则表达式-awk工具》
  • 国际阿里云腾讯云:阿里云服务器怎么打包
  • FPGA中锁存器(latch)、触发器(flip-flop)以及寄存器(register)详解
  • 【正点原子STM32连载】第十八章 通用定时器PWM输出实验 摘自【正点原子】APM32F407最小系统板使用指南
  • 分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测
  • 6.链路追踪-Zipkin