节点的高度:节点到叶子节点的最长路径(变数);从下至上;叶子节点为零
节点的深度:根节点到这个节点所经历的边的个数;从上之下;根节点为零
节点的层数:节点的深度+1;
树的高度:根节点的高度
满二叉树:叶子节点全都在最底层;除了叶子节点之外,每个节点都有左右两个子节点
完全二叉树:叶子节点都在最底下两层,最后一层的叶子节点都靠左排列;并且除了最后一层,其他层的节点个数都要达到最大
二叉树存储:一种是基于指针或者引用的二叉链式存储法,一种是基于数组的顺序存储法
链式存储法:每个节点有三个字段,其中一个存储数据,另外两个是指向左右子节点的指针,我们只要知道根节点就可以通过左右子节点的指针将整颗树串起来
数组的顺序存储法:把根节点存储在下标i = 1的位置,那左子节点存储在下标2*i = 2 的位置,右子节点存储在2*i +1 = 3的为位置
完全二叉树仅仅浪费一个下标为0的存储位置,如果是非完全二叉树会浪费比较多的数组存储空间
二叉树的遍历:前序遍历,中序遍历和后序遍历
前序遍历是指,对于树中的任意节点来说,先打印这个节点,然后打印他的左子树,最后打印他的右子树
中序遍历是指,对于树中的任意节点来说,先打印他的左子树,然后打印他的本身,最有打印他的右子树
后序遍历是指,对于树的任意节点来说,先打印他的左子树,然后打印右子树,最后打印这个节点本身