一、二叉树的定义
二叉树(Binary Tree)是树形结构的一个重要类型,由n(n≥0)个结点组成的有序集合。这个集合或者为空集(称为空二叉树),或者由一个根节点加上两棵互不相交的、分别称为左子树和右子树的二叉树组成。二叉树的特点是每个节点最多只能有两棵子树,且有左右之分,是有序树。
二、二叉树的特点
1、每个节点最多有两个子树:即二叉树不存在度大于2的节点。 2、左子树和右子树是有序的:次序不能任意颠倒,即左子树和右子树是严格区分的。 3、即使树中某节点只有一棵子树,也要区分它是左子树还是右子树。
三、二叉树的基本形态
二叉树是递归定义的,其节点有左右子树之分,逻辑上二叉树有五种基本形态:
1、空二叉树:没有任何节点的二叉树。 2、只有一个根节点的二叉树:仅包含一个根节点,没有子树。 3、只有左子树:根节点只有左子树,没有右子树。 4、只有右子树:根节点只有右子树,没有左子树。 5、根节点既有左子树又有右子树:这是最一般的二叉树形态。
四、特殊类型的二叉树
1、满二叉树: 如果一棵二叉树的所有分支节点都存在左子树和右子树,并且所有叶子节点都在同一层上,那么这棵二叉树被称为满二叉树。
2、完全二叉树: 对于深度为k的,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中编号从1至n的节点一一对应时,这棵树被称为完全二叉树。完全二叉树的特点是叶子节点只可能出现在层序最大的两层上,并且某个节点的左分支下子孙的最大层序与右分支下子孙的最大层序相等或大1。
五、二叉树的性质
1、节点数关系: 在二叉树的第i层上最多有2^(i-1)个节点(i≥1)。深度为h的二叉树中至多含有2^h-1个节点(h≥1)。
2、叶子节点与度为2的节点关系: 在任意一棵二叉树中,如果n0表示度数为0的节点数(即叶子节点数),n2表示度数为2的节点数,则必有n0=n2+1。
3、完全二叉树的深度: 具有n个节点的完全二叉树的深度为[log2n]+1,其中[log2n]是向下取整。
六、二叉树的遍历
遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有节点,使每一个节点都被访问一次,而且只被访问一次。 二叉树的遍历方式主要有前序遍历、中序遍历和后序遍历三种,以及层次遍历(也称为广度优先遍历)。