二叉树
二叉树也称二分树,是有限的节点集合,这个集合或者是空,或者是由一个根节点和两棵互不相交的称为左子树和右子树的二叉树组成。
二叉树结构简单,存储效率高,运算算法也相对简单,而且任何m次树都可以转化为二叉树结构。因此二叉树具有很重要的地位。
二叉树和2次树的区别,对于非空树:1、二次树中至少有一个节点的度为2,二叉树没有此要求2、二次树不区分左、右子树,二叉树严格区分左、右子树。
二叉树5种基本形态:1.空二叉树2.单节点二叉树3.右子树为空的二叉树4.左子树为空的二叉树5.左右子树都不为空的二叉树。
二叉树ADT、表示方法、术语均与树一致。
在一棵二叉树中,如果所有分支节点都有左孩子节点和右孩子节点,并且叶子节点都集中在二叉树的最下一层,这样的二叉树称为满二叉树。或一颗高度为h且有2h-1个节点的二叉树称为满二叉树。可以对二叉树的节点进行层序编号,约定编号从树根为1开始,按层数从小到大,同一层从左到右的次序进行。
满二叉树特点:叶子节点都在最下一层;只有度为0和度为2的节点。
若二叉树中最多只有最下面两层的节点的度小于2,并且最下面一层的叶子节点都依次排列在该层最左边的位置上,则这样的二叉树称为完全二叉树。满二叉树是完全二叉树的特例。
完全二叉树特点:
- 叶子节点只可能在层次最大的两层上出现
- 对于最大层次中的叶子节点,都依次排列在该层最左边的位置上
- 若有度为1的节点,只可能有一个,且该节点只有左孩子而无右孩子
- 按层序编号后,一旦出现某编号为i的节点,为叶子节点或只有左孩子,则编号大于i的节点均为叶子节点
- 当节点总数n为奇数时,度为1的节点个数n1=0,当节点总数n为偶数时,n1=1