美文网首页
满二叉树与完全二叉树的概念及其二叉树的存储

满二叉树与完全二叉树的概念及其二叉树的存储

作者: 吕艳凯 | 来源:发表于2019-12-06 16:14 被阅读0次

什么是满二叉树呢?
一个二叉树的所有非叶子节点都存在左右孩子,并且所有叶子节点都在同一层级上,那么这个树就是满二叉树。

image.png
什么是完全二叉树呢?
完全二叉树的条件没有满二叉树那么苛刻:满二叉树要求所有分支都是满的;而完全二叉树只需保证最后一个节点之前的节点都齐全即可。
image.png

二叉树的存储

二叉树属于逻辑结构,它可以通过多种物理结构来表达。
二叉树可以用哪些物理存储结构来表达呢?
1. 链式存储结构。
链表是一对一的存储方式,每一个链表节点拥有data变量和一个指向下一节点的next指针。
而二叉树稍微复杂一些,一个节点最多可以指向左右两个孩子节点,所以二叉
树的每一个节点包含3部分。
存储数据的data变量
指向左孩子的left指针
指向右孩子的right指针

image.png
2. 数组。
使用数组存储时,会按照层级顺序把二叉树的节点放到数组中对应的位置上。如果某一个节点的左孩子或右孩子空缺,则数组的相应位置也空出来。
为什么这样设计呢?因为这样可以更方便地在数组中定位二叉树的孩子节点和父节点。
假设一个父节点的下标是parent,那么它的左孩子节点下标就是2×parent +1;右孩子节点下标就是2×parent + 2。
反过来,假设一个左孩子节点的下标是leftChild,那么它的父节点下标就是(leftChild-1)/ 2。
假如节点4在数组中的下标是3,节点4是节点2的左孩子,节点2的下标可以直接通过计算得出。
节点2的下标 = (3-1)/2 = 1
image.png
显然,对于一个稀疏的二叉树来说,用数组表示法是非常浪费空间的。
什么样的二叉树最适合用数组表示呢?
二叉堆,一种特殊的完全二叉树,就是用数组来存储的。

相关文章

  • 树型的概念 满二叉树:对于二叉树的任意节点,要么是叶节点,要么左右子树都存在,则为满二叉树。 完全二叉树:如果一棵...

  • Java数据结构之树

    数据结构之 树 二叉树每个节点最多有两个子树的树结构,在二叉树的概念下又衍生出满二叉树和完全二叉树。满二叉树除最后...

  • 数据结构与算法-二叉树02

    二叉树的定义 二叉树的特点 二叉树的五中基本形态 其他二叉树 斜二叉树 满二叉树 完全二叉树图片.png满二叉树一...

  • 数据结构之逻辑结构_树

    满二叉树与完全二叉树 满二叉树:深度为k且含有(2的k方)-1个结点的二叉树。 完成二叉树:在第k层深度被填满之前...

  • 图解“红黑树”原理,一看就明白

    学过数据结构都知道二叉树的概念,而又有多种比较常见的二叉树类型,比如完全二叉树、满二叉树、二叉搜索树、均衡二叉树、...

  • 四、树与二叉树

    四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...

  • 树与二叉树

    **树 ** 二叉树 满二叉树 完全二叉树 三种遍历方法 树与二叉树的区别 二叉查找树 平衡二叉树 红黑二叉树

  • 二叉树理论介绍

    二叉树的种类 满二叉树 完全二叉树 满二叉树 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的...

  • [AlgoGo]堆

    堆的定义 完全二叉树 每个节点大于等于子节点 堆的实现 存储方式堆是一个完全二叉树,完全二叉树适合时候数组存储,因...

  • 数据结构3:二叉树详细介绍

    9.二叉树 9.1 二叉树的定义 9.2 满二叉树与完全二叉树 9.3 二叉查找树(也叫二叉搜索树,二...

网友评论

      本文标题:满二叉树与完全二叉树的概念及其二叉树的存储

      本文链接:https://www.haomeiwen.com/subject/lfeegctx.html