二叉树为什么那么重要?因为使用二叉树可以使查找与用数组查找一样快,同时在二叉树中添加、删除又能像链表中一样高效,因而掌握二叉树的相关知识是非常重要的。
(1)二叉树的递归定义
二叉树或者是一棵空树,或者是一棵由一个根节点和两棵互不相交的分别称作根节点的左子树和右子树所组成的非空树,左子树和右子树分别是一棵二叉树。
结点的度:结点所拥有的子树的个数称为该结点的度;
结点的层次:规定树的根节点的层数为1,其余结点的层数等于它的双亲结点的层数加1;
树的深度:树中所有结点的最大层数称为树的深度;
树的度:树中各结点度的最大值称为该树的度;
满二叉树:所有分支结点都存在左子树和右子树,所有叶子结点都在同一层上,这样的二叉树称为满二叉树;
完全二叉树:对于一棵二叉树,如果对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则称这棵二叉树为完全二叉树;完全二叉树中,叶子结点只出现在最下层和次下层,且最下层的叶子结点集中在树的左部;显然,满二叉树是完全二叉树,完全二叉树则未必是满二叉树;
(2)二叉树的基本性质
a. 非空二叉树的第i层上最多有2^(i-1)个结点;
b. 深度为k的二叉树最多有2^(k)-1个结点,最少有k个结点;
c. 对于一棵非空二叉树,度为0的结点即叶子结点总是比度为2的结点多一个,证明:如果度为0,1,2的结点个数分别为n0,n1,n2,那么n1+2*n2 = n0+n1+n2 - 1, 则n0 = n2+1, 得证;
d. 具有n个结点的完全二叉树的深度为;
e. 对于具有n个结点完全二叉树,如果编号从1开始,那么对于编号为i(1<=i<=n)的结点,其双亲结点、左儿子、右儿子的编号分别为i/2, 2i, 2i+1;如果编号从0开始,那么其双亲结点、左儿子、右儿子的编号分别为(i-1)/2, 2i+1, 2i+2;根结点没有双亲。