二叉树:是由n>=0个节点所构成的有限集合。当n=0时,此二叉树为空树;当n>0时,这个二叉树是由一个根节点和两个互不相交的分别称为左子树和右子树的二叉树构成。
二叉树与树的区别:
1.树中的每个节点可以有多于两个的子树,而二叉树每个节点至多有两个子树。
2.树中的子树是不分顺序的,而二叉树中的子树有严格的左右之分。
3.相同节点数所能组成的不同形态的树和二叉树的数目不同。
下面介绍两种特殊的二叉树:
满二叉树:如果在一棵二叉树中,所有节点如果不是叶节点的话,那么其左右子树必须非空,并且所有叶子节点必须在同一层。
完全二叉树:如果一个n个节点的二叉树其逻辑结构与满二叉树的前n个节点的逻辑 结构相同,那么这个二叉树为完全二叉树。
二叉树的性质:
1.二叉树中第i层上的节点数目最多为2^i。
2.深度为h的二叉树中最多有2^h-1个节点。
3.对于任意一个二叉树,如果其叶节点的个数为n0,深度为2的节点数目为n2,则有n0=n2+1。
4.具有n个节点的完全二叉树,其深度为log2(n)向下取整加1或者log2(n+1)向上取整。
5.对于具有n个节点的完全二叉树,如果从根节点开始自上而下并且按照层次由左到右对节点从0开始进行编号,则对于任意一个编号为i的节点有(1)如果i=0,则该节点为根节点,没有双亲节点;如果i>=1则其双亲的编号为(i-1)/2向下取整。(2)如果2i+1>n,则编号为i的节点无左孩子节点,否则编号为2i+1的节点就是其做孩子节点。(3)若2i+2>n,则编号为i的节点无右孩子节点,否则编号为2i+2的节点就是其右孩子节点。