1.在说二叉树之前先说下什么是树?
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成的一个具有层次关系的集合。像一棵倒挂的树,它的根是朝上的,而叶子是朝下的。它的特点:每个根结点有零个或多个子结点,没有父结点的结点成为根结点,每个非根结点有且只有一个父结点!每个子结点可以分为多个不相交的子树。子树是不相交的!
节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
树的度:一棵树中,最大的节点的度称为树的度;
节点的度:一个节点含有的子树的个数称为该节点的度;
树的高度或深度:树中节点的最大层次;
2.二叉树
二叉树就是一种特殊的树,每个结点最多有两棵子树,即二叉树不存在度大于2的结点,二叉树的子树有左右之分,其子树的次序不能颠倒。下图所示:
特殊的三种二叉树:
1.满二叉树:每一层的结点数达到最大值,也就是说一个二叉树的层数为k,则结点总数就是2^k-1,如下图所示:
2.完全二叉树
完全二叉树也就是说除最后一层外,其他每一层结点数都达到最大值,如下图所示:
3.平衡二叉树
平衡二叉树就是根节点的左右子树的高度差的绝对值<=1,而且左右子树又都分别是平衡二叉树。
二叉树更多的会用到递归的思想,因为有时用递归解决问题会比较简单,二叉树的建立就是一个递归的过程,最上方的根节点开始分别建立左右结点,然后又以左右结点为根节点建立左右结点,这样下去就是一棵二叉树。