二叉树的基本概念
二叉树(Binary Tree)是 n()个结点的有限集合。当 时称为空二叉树;否则二叉树由一个根结点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成。
递归定义
二叉树的定义本身具有递归性:
- 根结点:唯一的一个根结点
- 左子树:根结点的左侧子树,也是一棵二叉树
- 右子树:根结点的右侧子树,也是一棵二叉树
基本术语
- 结点的度:结点拥有的子树数。二叉树的结点的度最大为 2
- 叶子结点(Leaf):度为 0 的结点,也称终端结点
- 分支结点:度不为 0 的结点,也称非终端结点
- 孩子与双亲:结点的子树的根称为该结点的孩子,该结点称为孩子的双亲
- 兄弟:同一个双亲的孩子之间互称兄弟
- 结点的层次:从根开始定义,根为第 1 层,根的孩子为第 2 层,以此类推
- 深度(Depth):树中结点的最大层次数
- 满二叉树:深度为 k 且含有 2^k - 1 个结点的二叉树。每一层上的结点数都达到最大
- 完全二叉树:深度为 k 的、有 n 个结点的二叉树,当且仅当其每一个结点都与深度为 k 的满二叉树中编号从 1 至 n 的结点一一对应时,称为完全二叉树
满二叉树与完全二叉树的特点
满二叉树的特点:
- 叶子结点全部在最底层
- 每个分支结点都有两个非空子树
- 相同深度的二叉树中,满二叉树的结点数最多
完全二叉树的特点:
- 叶子结点只可能出现在层次最大的两层上
- 对任一结点,若其右子树深度为 d,则其左子树的深度只能为 d 或 d + 1
- 完全二叉树可以采用顺序存储结构(数组)来高效存储
二叉树的主要性质
- 第 i 层至多有 2^(i-1) 个结点
- 深度为 k 的二叉树至多有 2^k - 1 个结点
- 叶子结点数 n0 = 度为 2 的结点数 n2 + 1
- 具有 n 个结点的完全二叉树深度为 floor(log2 n) + 1
- 完全二叉树中结点 i 的左孩子为 2i,右孩子为 2i + 1
二叉树严格区分左子树和右子树,即使只有一棵子树也要明确是左子树还是右子树,这是二叉树与有序树的本质区别之一。
链接到
- 上一个知识点:6.2 树的存储结构
- 下一个知识点:6.4 二叉树的性质