一、概念及结构
- 概念:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。
- 特点:
2.1:二叉树有天然递归的特性。
2.2:每个结点最多有两棵子树,即二叉树不存在度大于2的结点。
2.3:二叉树的子树有左右之分,其子树的次序不能颠倒。
3.特殊的二叉树:
3.1:满二叉树:一个二叉树,如果每一层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^K) - 1,则它就是满二叉树。
3.2:完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1~n的结点 -- 对应时称之为完全二叉树。满二叉树是一种特殊的完全二叉树。
4.二叉树的储存结构:
二叉树一般可以使用两种结构储存,一种顺序结构,一种链式结构。
二叉树接口定义:
package BinaryTree;
import javax.xml.soap.Node;
/**
* 二叉树通用接口
* @param <E>
*/
public interface BinTree<E> {
/**
* 向二叉树中添加元素
* @param e
*/
void add(E e);
/**
* 取得二叉树节点个数
* @return
*/
int getSize();
/**
* 查找是否含有指定元素
* @param e
* @return
*/
boolean contains(E e);
/**
* 二叉树的前序遍历
*/
void preOrder();
/**
* 二叉树中序遍历
*/
void inOrder();
/**
* 二叉树后序遍历
*/
void postOrder();
/**
* 层序遍历
*/
void levelOrder();
/**
* 取得二叉树的最小值节点
*/
E getmin();
/**
* 取得二叉树的最大值节点
*/
E getmax();
E removeMin();
E removeMax();
/**
* 移除指定值结点
* @param e
* @return
*/
void remove(E e);
}
5.前序/中序/后