【分析】
二叉树的结构:根节点、左子树、右子树。其中左子树的值必须小于根节点,右子树的值必须大于根节点。构造这种树结构,就是创建一个类,并提供一个方法,当给定一个值时,它能够自动创建节点并自动挂到二叉树的合适位置。
二叉树的遍历:分为先序遍历、中序遍历和后序遍历。先序遍历:根、左、右。
中需遍历:左、根、右。
后续遍历:左、右、根。
二叉树的应用:加密解密、文件压缩、快速查询、快速遍历等。
1、构造二叉树的节点对象,并提供插入方法。
private int data; //存放节点数据
private BinaryTree left; //左子树
private BinaryTree right; //右子树 /**
* 构造方法,创建新节点
*/
public BinaryTree(int data) {
this.data = data;
this.left = null;
this.right = null;
} /**
* 插入新节点
*/
public void insert(BinaryTree root, int data){
if(root !=null){
if(data <root.data){
if(root.left ==null){ //左子树空位,插入
root.left = new BinaryTree(data);
}else{ //左子树非空,将左子树作为根节点递归
insert(root.left, data);
}
}else{
if(root.right ==null){
root.right = new BinaryTree(data);
}else{
insert(root.right, data);
}
}
}
}
2.插入节点构造出二叉树,并通过先序遍历、中序遍历、后序遍历对二叉树进行遍历
public static void main(String[] args) {
BinaryTree root = new BinaryTree(6); //创建根节点
int[] a = {2,1,4,5,3,8,6,7,9};
for (int i = 0; i < a.length; i++) { //插入节点
root.insert(root, a[i]);
} preTraversal( root);
midTraversal( root);
sufTraversal( root);
}
//先序遍历
public static void preTraversal(BinaryTree root){
if (root !=null) {
System.out.print(root.getData() +"-");
preTraversal(root.getLeft());
preTraversal(root.getRight());
} } //中序遍历
public static void midTraversal(BinaryTree root){
if(root !=null){
midTraversal(root.getLeft());
System.out.print(root.getData()+"-");
midTraversal(root.getRight());
}
} //后序遍历
public static void sufTraversal(BinaryTree root){
if(root !=null){
sufTraversal(root.getLeft());
sufTraversal(root.getRight());
System.out.print(root.getData()+"-");
}
}