news 2026/6/6 20:47:04

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【数据结构】 树、二叉树、完全二叉树,先序遍历、中序遍历、后序遍历

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

一棵树由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

推算二叉树:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 20:45:05

5分钟掌握VMDE:专业虚拟机检测工具的快速入门指南

5分钟掌握VMDE:专业虚拟机检测工具的快速入门指南 【免费下载链接】VMDE Source from VMDE paper, adapted to 2015 项目地址: https://gitcode.com/gh_mirrors/vm/VMDE 你是否曾怀疑自己的电脑是否运行在虚拟机中?或者作为安全研究人员&#xff…

作者头像 李华
网站建设 2026/6/6 20:40:39

RV1126——获取RGA模块的数据

一、RGA模块1.1 RGA模块的定义RGA Raster Graphic Acceleration Unit,瑞芯微 2D 硬件图形加速器,RV1126 芯片内置独立硬件图像处理单元,纯硬件运算、不占用 CPU,核心能力: 图像缩放、裁剪、旋转 (0/90/180/270)、YUV/…

作者头像 李华
网站建设 2026/6/6 20:40:34

Burp Suite基础抓包改包实操|Web渗透入门必备

前言对于刚入门Web渗透和CTF的新手来说,Burp Suite是必不可少的核心工具。绝大多数SQL注入、文件上传、越权访问等题型,都需要依靠抓包、改包、重放请求来解题。很多新手入门时会遇到抓不到包、代理报错、请求篡改不生效等问题,本文结合Windo…

作者头像 李华
网站建设 2026/6/6 20:39:38

GitBlit 详解:轻量级的纯 Java Git 服务器

GitBlit 详解:轻量级的纯 Java Git 服务器 文章目录GitBlit 详解:轻量级的纯 Java Git 服务器一、核心优势:5 分钟启动运行二、主要功能:麻雀虽小,五脏俱全三、适用场景与局限性✅ 适用场景❌ 局限性四、总结&#xff…

作者头像 李华