1.基本概念
二叉树(Binary Tree)也称为二分树、二元树、对分树等,它是 n (n>=0)个有限元素的集合,该集合或者为空,或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。当集合为空时,称该二叉树为空二叉树。
在二叉树中, 一个元素也称作一个结点。二叉树递归地定义为:二叉树或者一棵空树,或者是一棵由一个根节点和两棵互不相交的分别称作根结点的左子树和右子树所组成的非空树,左子树和右子树又同样都是一棵二叉树。
以下是一些常见的二叉树的基本概念:
- 结点的度。结点所拥有的子树的个数称为该结点的度。
- 叶子结点。度为0的结点称为叶子结点,或者称为终端结点。
- 分支结点。度不为0的结点称为分支结点,或者称为非终端结点。一棵树的结点除叶子结点外,其余的都是分支结点。
- 左孩子,右孩子,双亲。树中一个结点的子树的根节点称为这个结点的孩子。这个结点称为它孩子结点的双亲。具有同一个双亲的孩子结点互称为兄弟。
- 路径、路径长度。如果一个棵树的一串结点 n1,n2,…,nk 有如下关系:结点 ni 是 n(i+1) 的父节点(1<=i<k),就把 n1,n2,…,nk 称为一条由 n1 至 nk 的路径。这条路径的长度为 k-1。
- 祖先,子孙。在树中,如果有一条路径从结点 M 到结点 N,那么 M 就称为 N 的祖先,而N称为M的子孙。
- 结点的层数。
规定树的根节点的层数为1
,其余结点的层数等于它双亲结点的层数+1. - 树的深度。树中所有结点的最大层数称为树的深度。
- 树的度。树中各结点度的最大值称为树的度。叶子结点的度为0。
- 满二叉树。在一棵二叉树中,如果
所有分支结点都存在左子树和右子树
,并且所有叶子结点都在同一层上,这样的一棵二叉树称作满二叉树。 - 完全二叉树。一棵深度为 k 的有 n 个结点的二叉树,对树中的结点按从上至下、从左至右的顺序进行编号,如果编号为 i (1<=i<=n)的结点与满二叉树中编号为 i 的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。完全二叉树的特点是,叶子节点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。需要注意的是,满二叉树肯定是完全二叉树,而完全二叉树不一定是满二叉树。
2.性质
- 一棵非空二叉树的第 i 层上最多有 2^(i-1)个结点(i>=1)。
- 一棵深度为 k 的二叉树中,最多只有 2^k - 1个结点,最少有 k 个结点。
- 对于一棵非空的二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个,即如果叶子结点个数为 n0,度为2的结点数为 n2,则有 n0=n2+1。
证明:用 n0表示度为0的结点个数,用n1表示度为1的结点个数,用 n2表示为 2 的结点个数,n表示整个完全二叉树的结点总数。则 n= n1 + n2+ n0,根据二叉树和树的性质,可知 n= n1 + 2 * n2+1 (所有结点度数之和+1=结点总数),根据两个等式可知,n1 + n2+ n0 = n1 + 2 * n2+1 ,所以n0=n2+1。
5.
.
3.例题
-
一棵完全二叉树有1001个结点,其中叶子结点个数是多少?
分析:二叉树公式:n = n0 + n1 + n2 = n0 + n1 + (n0-1) = 2 * n0 + n1 -1
在完全二叉树中,n1 只能取0或1,若n1=1,则 n0为小数,舍去;若 n1=0,则 n0为501,所以答案为501。 -
在具有100个结点的树中,其边数为多少?
在一棵树中,除了根节点外,每一个结点都有一条入边,所以总边数应为100-1=99。
end