满二叉树:如图,也就是这个二叉树除了度为0的结点之外,其余都是度为2的结点。在满二叉树中,我们要注意的是如何计算满二叉树的总结点数,以及每一层结点的个数,以及已知满二叉树的总结点求这个二叉树的层数等二叉树基本的计算。
完全二叉树:如图,度为0的结点只分布在二叉树的最后一层和导数第二层,在直观上的感受就是这个二叉树除了最后一层,其余层都是满的,并且最后一层从左到右是连续的,同样要熟悉完全二叉树的基本计算方法。
二叉搜索树(二叉排序树):二叉树是一种有序树,其结点左子树结点的值小于该节点,其结点右子树结点的值大于该节点。二叉搜索树的中序遍历恰好是一个递增的有序序列。其查找树中一个元素的事件复杂度是logn级别的。
平衡二叉搜索树的概念是在二叉搜索树的基础上,左右子树之间的高度差不能大于1。
二叉树的存储:在使用二叉树的过程中绝大多数树是使用链式存储来存储二叉树,所以我们要主要了解其连输存储方式,但是除了链式存储之外,也可以使用顺序存储来存储二叉树,在这里作为了解就行。
那么使用链式存储的话,我们怎样遍历一个节点的左孩子还是右孩子呢?我们是通过数组的下标索引来寻找一个节点的左孩子和右孩子。若一个结点的下标为i,那么这个结点的左孩子的下标索引为2*i+1,这个结点的右孩子的下标索引为2*i+2。
二叉树的遍历:二叉树有两种遍历方式,一种是深度优先遍历,一种是广度优先遍历。前中后序遍历都是属于深度优先遍历。广度优先遍历中常见的是层序遍历(使用队列来实现)。实现深度优先遍历,可以有两种方法(递归法和迭代法),常用的方法是递归来实现,但编程语言在底层实现递归还是使用栈这种数据结构来实现的。