【数据结构】 树、二叉树、完全二叉树,先序遍历、中序遍历、后序遍历

树是一种非线性的数据结构

一棵树由n(n>=0)个元素组成,当n为0时,称为空树

树的定义

1.每个元素都可以称为节点

2.非空树中,有一个特定的点,称为根节点或树根

3.每个节点下方连接的节点称为后代节点

没有子树的节点,称为叶子节点

一个节点子树的个数,称为这个结点的度,叶子节点的度为0

树种各结点度的最大值,称为数的度

树中所有节点层次的最大值称为树的深度

二叉树:所有节点的度都不大与2的树

二叉树有5种形态:

二叉树的特性:

  1. 在二叉树的第i层上最多有2i-1个结点(i ≥ 1)
  1. 深度为k的二叉树的总结点个数最多为2k-1个(k ≥ 1)
  1. 满二叉树的定义:一棵深度为k且有2k-1个结点的二叉树称为满二叉树。

完全二叉树:二叉树中除去最后一层结点为满二叉树,且最后一层的结点依次从左到右分布。

二叉树的遍历:

对于二叉树而言,是由三个基本单元组成:根结点、左子树和右子树。因此如果能遍历这三部分,就能遍历整个二叉树

三种二叉树遍历方式

  1. 先序遍历( 根 -> 左 -> 右 )
  2. 中序遍历( 左 -> 根 -> 右 )
  3. 后序遍历( 左 -> 右 -> 根 )
  4. 层序遍历

例如下面这个表:

先序遍历为:e a c b d g f

中序遍历为:a b c d e f g

后序遍历为:b d c a f g e

层序遍历为:e a g c f b d

先序简单方法:在每个节点左边打点,连一根线:

中序简单方法,在每个节点下面打一个点,连一根线:

后序简单方法:在每个节点右边打一个点,连一根线:

前序遍历序列和中序遍历序列相同的二叉树:只有根结点的二叉树或非叶子结点只有右子树的二叉树

序列构造二叉树:

  1. 先序:A B D C E F G
  2. 中序:D B A E G C F

推算二叉树:

相关推荐
v_34836087625 小时前
Android native端 堆栈打印
android·算法
residual_fan5 小时前
【学术论文】航空发动机故障诊断智能体:基于持续对比强化学习的动态优化方法
人工智能·算法·数据挖掘·数据分析
GreenTea5 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
深圳满意度咨询6 小时前
医院满意度数字化测评系统:从数据采集到智能决策的技术实践
算法
xiangyun617 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun617 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
OKkankan8 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
蓝速科技8 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
302wanger9 小时前
推荐下我的两个AI信息源
算法
索尔~古德曼9 小时前
CF——错题的集合
算法