第五章 树、2叉树
5.1. 树的概念
5.1.1. 树的基本定义
树:n(n>=0)个节点的有限集合,是一种逻辑结构,当n=0时为空树,
且非空树满足:
- 有且仅有一个特定的称为根的节点.
- 当n>1时,其余结点可分为m (m >0) 个互不相交的有限集合,其中每个集合本身又是一棵树,并且称为根结点的子树。
树是一种递归的数据结构
非空树特点:
- 有且仅有一个根节点
- 没有后继的结点称为“叶子结点”(或终端节点)
- 有后继的结点称为“分支结点” (或非终端结点)
- 除了根节点外,任何一个结点都有且仅有一个前驱
- 每个结点可以有0个或多个后继
- 祖先结点:自己的之上都是祖先节点。
- 子孙结点:自己的之下都是子孙节点。
- 双亲结点 (父节点) :和自己相连的上一个就是父节点。
- 孩子结点:和自己相连的下面一个。
- 兄弟结点:我自己同一个父节点的。
- 堂兄弟结点:同一层的节点。
属性:
- 结点的层次(深度)-从上往下数
- 结点的高度一从下往上数
- 树的高度 (深度)一总共多少层
- 结点的度--有几个孩子(分支)。父亲2,二叔1,三叔3
- 树的度一各结点的度的最大值
有序树和无序树
- 有序树--逻辑上看,树中结点的各子树从左至右是有次序的,不能互换
- 无序树--逻辑上看,树中结点的各子树从左至右是无次序的,可以互换
森林:是m(>=0)棵互不相交的树的集合。
5.1.2. 树的常考性质
常见考点1: 树中的结点数=总度数+1
常见考点2:度为m的树、m叉树的区别:
- 树的度--各结点的度的最大值;
- m叉树--每个结点最多只能有m个孩子的树

5.2. 二叉树
5.2.1. 二叉树的定义
二叉树是n (n>=0)个结点的有限集合:
- 或者为空二叉树,即n =0。
- 或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成。左子树和右子树又分别是一棵二叉树。
特点:
- 每个结点至多只有两棵子树
- 左右子树不能颠倒 (二叉树是有序树)
- 二叉树可以是空集合,根可以有空的左子树和空的右子树
5.2.2. 特殊二叉树
5.2.3. 二叉树的性质
n0=n2+1
叶子结点(度为0)
结点总数 n=n0+n1+n2,其中 n1 是度为1的结点数。
由性质:树中的结点数=总度数+1可知:(边数公式)
总度数为 n1+2n2(度为1的结点贡献1,度为2的结点贡献2个):n=(n1+2*n2)+1
将两式相减:(n1+2n2+1)−(n0+n1+n2)=0
化简得:n2+1−n0=0⇒n0=n2+1
层节点数
h->节点个数
完全二叉树
节点个数->h
求n0、n1、n2
完全二叉树中,度为1的结点最多只有1个(即 n1=0或 n=1)
由于n0=n2+1带入n0+n2——> 必为奇数
结点总数为偶数的情况:若完全二叉树有2k个结点,则必有n₁=1,n₀=k,n₂=k-1。
结点总数为奇数的情况:若完全二叉树有2k-1个结点,则必有n₁=0,n₀=k,n₂=k-1。