二叉树的定义
一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。
二叉树的5种基本形态,任意一棵二叉树都由这5种形态组合而成
空二叉树,单节点二叉树,右子树为空的二叉树,左子树为空的二叉树,左右子树都有的二叉树
性质1
非空二叉树的第i层,最多有(2的(i-1)次方)个节点
性质2
高度为h的二叉树,最多有(2的h次方-1)个节点
性质3
对于任意一棵二叉树,如果它的叶子节点数为N0,度为2的节点数为N2,那么N0=N2+1
性质4
具有n个结点的完全二叉树的高度为log2(n+1)或log2(n)+1。
性质5
如果将一棵有n个结点的完全二叉树自顶向下,同一层自左向右连续给节点编号为1,2,3,···,n,然后按此结点编号将树中各结点顺序地存放于一个一位数组中,并简称编号为i的结点为结点i(1≤i≤n)。则有以下关系:
若i≤n/2,即2i≤n,则编号为i的结点为分支结点,否则为叶子结点。
若n为奇数,则每个分支结点都既有左孩子结点,也有右孩子结点;若n为偶数,则编号最大的分支结点(编号为n/2)只有左孩子节点,没有右孩子结点,其余分支结点都有左右孩子结点
若编号为i的结点有左孩子结点,则左孩子结点的编号为2i,若编号为i的结点有右孩子结点,则右孩子结点的编号为(2i+1)。
除根结点外,若一个结点的编号为i,则它的双亲结点的编号为⌊i/2⌋,也就是说,当i为偶数时,其双亲结点的编号为i/2,它是双亲结点的左孩子结点,当i为奇数时,其双亲结点的编号为(i-1)/2,它是双亲结点的右孩子结点。
满二叉树
结合性质2,高度为h的二叉树,如果它的节点个数达到最大,即为满二叉树
完全二叉树
如果一棵具有n个结点的高度为k的二叉树,它的每一个结点都与高度为k的满二叉树中编号为1~n的结点一一对应,则称这棵树为完全二叉树。
换一种说法
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
理解一下完全二叉树的概念,下图是一个满二叉树
然后是一个完全二叉树