> 文档中心 > 数据结构06 - 细节图文,了解二叉树的基本概念就靠这一篇了

数据结构06 - 细节图文,了解二叉树的基本概念就靠这一篇了


数据结构与算法 - 系列文章的索引

💘 数据结构01 - 数据结构的基本概念
💘 数据结构02 - 顺序表
💘 数据结构03 - 链表
💘 数据结构04 - 栈
💘 数据结构05 - 队列
💘 数据结构06 - 二叉树基本概念


在这里插入图片描述

👉 我是喜欢佳美宝贝,喜欢编程,喜欢动漫,喜欢健身的吴小哲同学 👉 👉 欢迎您阅读我的博客 👉 👉 您的评论点赞收藏是对我创作最大的鼓励和帮助~ 👉


文章目录

  • 数据结构与算法 - 系列文章的索引
  • 前言
  • 1 二叉树的概念
    • 1.1 基本概念
    • 1.2 特殊的二叉树
      • 1.2.1 满二叉树
      • 1.2.2 完全二叉树
  • 2 二叉树的存储结构
    • 2.1 二叉树的顺序存储
    • 2.2 二叉树的链式存储
  • // 后记

前言

💘 Lesson06 主要讲解二叉树的一些基本概念
💘 本章属于过渡章节,为下两篇的顺序存储实现以及链式存储实现做铺垫


1 二叉树的概念

1.1 基本概念

🏃 二叉树是一种特殊的树形结构
🏃 其特点是每个结点最多只有两颗子树,并且子树有左右之分,不能颠倒

💘 结构图如下:
在这里插入图片描述

🏃 根据跟结点的状态,可以将二叉树分为以下五种状态:

在这里插入图片描述

1.2 特殊的二叉树

1.2.1 满二叉树

🏃 高度是 h,且含有 2^h-1 个结点的二叉树
🏃 其实就是每一层的结点数都是满的二叉树

在这里插入图片描述

1.2.2 完全二叉树

🏃 完全二叉树是由满二叉树引申出来的,其特点是,树中的每一个结点都和其高度相等的满二叉树的结点一一对应

在这里插入图片描述

2 二叉树的存储结构

2.1 二叉树的顺序存储

🏃 顺序存储就是用一组连续的存储单元依次自上而下、自左向右地存储完全二叉树上的每一个结点

在这里插入图片描述

🏃 从父节点的下标 i ,我们可以迅速访问到左孩子: 2×i+1,右孩子: 2×i+2
🏃 从孩子结点的下标 i ,我们可以迅速访问到父亲结点: ( i - 1 )% 2

🏃 当不是完全二叉树时,就将空出来的结点所对应的存储单元也空出来即可

在这里插入图片描述

🏃 由上面两个图对比可知,完全二叉树非常适合顺序存储
🏃 因为结点能和数组一一对应,并且没有空间的浪费
🏃 但是非完全二叉树的顺序存储存在空间的浪费,如果结点非常少,浪费的就更严重

2.2 二叉树的链式存储

🏃 链式存储就是用链表来存储二叉树
🏃 通常的方法就是,链表的每一个结点由三个域构成,分别是:指向左孩子的指针指向右孩子的指针存储结点信息的数据域

在这里插入图片描述

🏃 链式存储的优点在于找左右孩子非常方便
🏃并且有二叉树有多少个结点,对应的存储结构中就有多少个节点,没有空间的浪费
🏃 但是,如果想从孩子结点去找双亲,就非常麻烦

💘 以上就是二叉树的基本概念,文章图片里的细节很多,希望大家能够认真观看


// 后记

🏃 以后每周会更新两到三篇学习数据结构的笔记,用来记录自己的学习历程,复习巩固所学的知识。
🏃 文中概念或者代码有任何错误的地方,希望大佬们在评论区指出,本人会虚心接受并且改正。