二叉树
二叉树是一棵树,其中每个节点都不能有多于两个的儿子。如下图显示一颗由一个根和两颗子树组成的二叉树,左子树和右子树均可能为空。
二叉树的实现
因为一个二叉树节点最多有两个子节点,所以我们可以保存直接链接到它们的链。树节点的声明在结构上类似于双链表的声明,在声明中,节点就是由element(元素)的信息加上两个到其他节点的引用(left和right)组成的结构。具体实现的代码如下:
private class Node{
private int element;//存放数据
private Node left;//左节点
private Node right;//右节点
}
二叉树的遍历
二叉树的遍历是一个很常见的问题。二叉树的遍历方式主要有:先序遍历、中序遍历、后序遍历、层次遍历。下面我们主要研究下先序、中序、后序遍历,这三种遍历方式其实指的是父节点被访问的次序。
- 先序遍历(preOrder):若在遍历过程中,父节点先于它的子节点被访问,就是先序遍历。
public void preOrder(){
System.out.print(this.data+"->");
if(this.left!=null){
this.left.preOrder();
}
if(this.right!=null){
this.right.preOrder();
}
}
- 中序遍历(inOrder):在遍历时,父节点被访问的次序位于左右孩子节点之间,就是中序遍历。
public void inOrder(){
if(this.left!=null){
this.left.inOrder();
}
System.out.print(this.data+"->")