二叉树
每个节点的度均不超过2的有序树,称为二叉树(binary tree)
与树的递归定义类似,二叉树的递归定义如下:
二叉树或者是一棵空树,或者是一棵由一个根节点和两颗互不相交的分别称为根的左子树和右子树的子树所组成的非空树。
由以上定义可以看出,
二叉树中每个节点的孩子数只能是0、1或者2个,并且每个孩子都有左右之分。
位于左边的孩子称为左孩子,位于右边的孩子称为右孩子;
以左孩子为根的子树称为左子树,以右孩子为根的子树称为右子树。
满二叉树
高度为k并且有2^(k+1)-1个节点的二叉树。
在满二叉树中,每层节点都达到最大数,即每层节点都是满的,因此称为满二叉树。
完全二叉树:
若在一棵满二叉树中,在最下层从最右侧起去掉相邻的若干叶子节点,得到的二叉树即为完全二叉树。
满二叉树必为完全二叉树,而完全二叉树不一定是满二叉树
二叉树的性质
性质1:在二叉树的第i层上最多有2^(i-1)个节点(根是第1层);
性质2:高度为h的二叉树至多有2^h-1个节点;
性质3:对任何一棵二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则n0 = n2 +1;
性质4:有n个节点的完全二叉树的高度为[log2n]+1,其中[log2n]是向下取整数;
性质5:含有n>=1个节点的二叉树的高度至多为n-1;高度至少为[log2n]+1,其中[log2n]是向下取整数;
性质6:如果对一棵有n个节点的完全二叉树的节点进行编号,则对任一节点i(1<=i<=n)有:
- 如果i=1,则节点i是二叉树的根,无双亲;如果i>1,则其双亲节点PARENT(i)是节点i/2
- 如果2i>n,则节点i无左孩子;否则其左孩子是节点2i
- 如果2i+1>n,则节点i无右孩子;否则其右孩子是节点2i+1.