C++ 二叉树
二叉树为什么要使用二叉树
二叉树的结构是树中最简单,而且是规律性最强的结构;
可以证明,所有树都能转化为唯一对应的二叉树,不失一般性。
二叉树的基本特征
[*]每个结点最多只有两棵子树(不存在度大于 2 的结点)
[*]左子树和右子树的次序不能颠倒(有序树)
二叉树的基本形态
[*]有左有右
[*]有左无右
[*]有右无左
[*]单根
[*]空树
二叉树的基本性质
[*]在二叉树的第 i 层上至多有 2i-1个节点(i > 0)
[*]深度为 k 的二叉树至多有 2k-1 个结点(k > 0)
[*]对于任何一棵二叉树,若度为 2 的结点数有 n2 个,叶子结点数为 n0 个,则 n0 = n2 + 1
满二叉树与完全二叉树
满二叉树:深度为 k 且有 2k-1 个结点的二叉树。
特点:每一层上的结点数都是最大结点数,可以对满二叉树的结点进行连续编号。如图:
完全二叉树:深度为 k,有 n 个结点的二叉树。当且仅当其每一个结点都与深度为 k 的满二叉树中编号从 1 至 n 的结点一一对应时,称之为完全二叉树。如图:
特点:
[*]叶子结点只可能在层次最大的两层出现
[*]对任一结点,若其右分支下子孙的最大层次数为 h,则其左分支下的子孙的最大层次数必为 h 或 h + 1
满二叉树和完全二叉树是二叉树的特例。
满二叉树一定是完全二叉树。
页:
[1]