【5.1】二叉树的概念

一、二叉树的定义

二叉树 (binary tree) 由结点的有限 集合构成

这个有限集合或者为空集 (empty),或者为由一个根结点 (root) 及两棵 互不相交、分别称作这个根的左子 树 (left subtree) 和右子树 (right subtree) 的二叉树组成的集合

二叉树的五种基本形态

二叉树可以是空集合,因此根可以有空的左子树或右子树,或 者左右子树皆为空

二叉树相关术语

结点:

  • 子结点、父结点、最左子结点
  • 若 <k,k′>∈ r,则称 k 是 k′ 的父结点(或“父 母”),而 k′ 则是 k 的 子结点 (或“儿子”、“子 女”)
  • 兄弟结点、左兄弟、右兄弟
  • 若有序对 <k,k′>及 <k,k′′>∈ r,则称 k′和 k′′ 互为兄弟
  • 分支结点、叶结点
  • 没有子树的结点称作 叶结点(或树叶、终端结点)
  • 非终端结点称为分支结点

边:两个结点的有序对,称作 边

路径、路径长度:

  • 除结点 k0外的任何结点 k∈K,都存在一个结点 序列 k0,k1,…,ks,使得 k0 就是树根,且 ks=k,其中有序对 <ki-1,ki>∈ r (1≤i≤s) 。 这样的结点序列称为从根到结点 k 的一条路径, 其路径长度为 s (包含的边数)

祖先、后代:

  • 若有一条由 k 到达 ks 的路径,则称 k 是 ks 的 祖先,ks 是 k 的 子孙

层数:根为第 0 层 D 。 其他结点的层数等于其父结点的层数加 1

深度:层数最大的叶结点的层数

高度:层数最大的叶结点的层数加 1

满二叉树

如果一棵二叉树的 任何 结点,或者是树叶,或者恰有两棵非空子树,则 此二叉树称作 满二叉树

完全二叉树

最多只有最下面的两层结点度数可以小于2

最下一层的结点都集中最左边

扩充二叉树

所有空子树,都增加空树叶

外部路径长度 E 和内部路径长度 I

* 满足:E = I + 2n (n 是内部结点个数)
二叉树的主要性质
  • 性质1. 在二叉树中,第i层上最多有 2i 个结点(i≥0)
  • 性质2. 深度为 k 的二叉树至多有 2k+1 -1个结点(k≥0), 其中深度(depth)定义为二叉树中层数最大的叶结点的层数
  • 性质3. 一棵二叉树,若其终端结点数为 n0,度为2的结点数为 n2, 则 n0=n2+1
  • 性质4. 满二叉树定理:非空满二叉树树叶数目等于其分支结点数加1
  • 性质5. 满二叉树定理推论:一个非空二叉树的空子树数目等于其结点数加1
  • 性质6. 有n个结点(n>0)的完全二叉树的高度为 [ log2 (n+1) ] ,深度为[log2 (n+1)] - 1

思考

  • 扩充二叉树和满二叉树的关系
  • 二叉树主要六个性质的关系

参考资料

北京大学 《数据结构与算法》 张铭、赵海燕、宋国杰、黄骏、邹磊、陈斌、王腾

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn