二叉树的基本概念

二叉树(Binary Tree)是 n()个结点的有限集合。当 时称为空二叉树;否则二叉树由一个根结点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成。

递归定义

二叉树的定义本身具有递归性:

  • 根结点:唯一的一个根结点
  • 左子树:根结点的左侧子树,也是一棵二叉树
  • 右子树:根结点的右侧子树,也是一棵二叉树

基本术语

  • 结点的度:结点拥有的子树数。二叉树的结点的度最大为 2
  • 叶子结点(Leaf):度为 0 的结点,也称终端结点
  • 分支结点:度不为 0 的结点,也称非终端结点
  • 孩子与双亲:结点的子树的根称为该结点的孩子,该结点称为孩子的双亲
  • 兄弟:同一个双亲的孩子之间互称兄弟
  • 结点的层次:从根开始定义,根为第 1 层,根的孩子为第 2 层,以此类推
  • 深度(Depth):树中结点的最大层次数
  • 满二叉树:深度为 k 且含有 2^k - 1 个结点的二叉树。每一层上的结点数都达到最大
  • 完全二叉树:深度为 k 的、有 n 个结点的二叉树,当且仅当其每一个结点都与深度为 k 的满二叉树中编号从 1 至 n 的结点一一对应时,称为完全二叉树

满二叉树与完全二叉树的特点

满二叉树的特点:

  • 叶子结点全部在最底层
  • 每个分支结点都有两个非空子树
  • 相同深度的二叉树中,满二叉树的结点数最多

完全二叉树的特点:

  • 叶子结点只可能出现在层次最大的两层上
  • 对任一结点,若其右子树深度为 d,则其左子树的深度只能为 d 或 d + 1
  • 完全二叉树可以采用顺序存储结构(数组)来高效存储

二叉树的主要性质

  1. 第 i 层至多有 2^(i-1) 个结点
  2. 深度为 k 的二叉树至多有 2^k - 1 个结点
  3. 叶子结点数 n0 = 度为 2 的结点数 n2 + 1
  4. 具有 n 个结点的完全二叉树深度为 floor(log2 n) + 1
  5. 完全二叉树中结点 i 的左孩子为 2i,右孩子为 2i + 1

二叉树严格区分左子树和右子树,即使只有一棵子树也要明确是左子树还是右子树,这是二叉树与有序树的本质区别之一。

链接到