二叉树的介绍

156 阅读2分钟

二叉树的定义

二叉树(Binary Tree)是一种树型结构,每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。

二叉树的性质

  1. 在二叉树的第i层上至多有2的i-1次方个结点(i>=1)
    在这里插入图片描述
    如图所示,第一层最多1个,第二层最多2个,等等
  2. 深度为k的二叉树至多有2的k次方-1个结点(k>=1)
    在这里插入图片描述
    如图所示,其实就是性质1的每层相加得到总结点树,如果为2的三次方-1=7个结点
  3. 对任何一棵二叉树T,如果其终端结点数为m,度为2的结点数为n,则,m=n+1(不证明)

完全二叉树和满二叉树是两种特殊形态的二叉树

  • 一颗深度为k且有2的k次方-1个结点的二叉树成为满二叉树,如图所示
    在这里插入图片描述
  • 一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树,如图所示
    在这里插入图片描述
    只要结点对应的数字是连续,即为完全二叉树
  1. 具有n个结点的完全二叉树的深度为[log2n]+1(向下取整)
  2. (最重要的性质来了),如果对一棵有n个结点的完全二叉树(其深度为[log2n]+1)的结点按层序编号(从第1层到第[log2n]+1层,每层从左到右),则对任一结点i(1<=i<=n),有以下性质

性质一、如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲PARENT(i)是结点[i/2」向下取整
在这里插入图片描述

性质二、若结点i有左孩子,那么左孩子一定为2i,反之若2i>n总结点,那么结点i一定没有左孩子

在这里插入图片描述

如图结点2的左孩子一定是2i,反之结点5,由于总结点为9,2i>9,所有结点5没有左孩子

性质三、如果2i+1>n,则结点无右孩子;否则其右孩子结点2i+1
在这里插入图片描述

二叉树的存储结构

顺序存储

基于数组存储,按照完全二叉树的编号存储,元素不存在,存0,

在这里插入图片描述

二叉树的链式结构

在这里插入图片描述