1.与树型结构有关的概念:
结点的度->结点拥有的子树,度为零的结点称为叶子节点,例如图中A的度为3,C的度为1,F的度为0。
树的度->树内各结点的度的最大值,例如上图中树的度为3。
树的深度(高度)->树中结点的最大层次,也是树的最大结点度数+1,例如上图中树的深度为4。
2.二叉树
(1)与二叉树有关的性质:
二叉树从0层开始,第i层最多有2i(2的i次方)个结点(i >= 0 );
深度为K的二叉树至多有2k-1(2的k次方减1)个节点(K >= 1);
任何一颗二叉树,其终端结点数n0与其度为2的结点数n2之间满足:n0 = n2+1;( 解释: 有n个结点的二叉树,其边数n-1 = 0*n0+1*n1+2*n2,又有n = n0+n1+n2,解这两式,就会得到上述性质);
具有n个结点的完全二叉树的深度为(log2n)+1;
(2)代码实现
1、定义二叉树:
(1)二叉树结构体的定义:
(2)购买结点,释放结点
(3)遍历二叉树,前序遍历(根左右),中序遍历(左根右),后序遍历(左右根),分别有递归的和非递归(用栈实现)的。层次遍历用队列实现,只有非递归的;
(4)求树的结点的个数,树的深度
(5)一般化创建树
(6)在二叉树中寻找特定的值,寻找特定值的父节点,在中序遍历序列中找一个数的下标
(7)通过前序中序创建树,通过中序后序创建树
(8)中序遍历、后序遍历、层次遍历的另一种实现
(9)销毁树