Java实现二叉查找树的前中后序遍历
1,认识二叉查找树
二叉查找树 又名二叉搜索树,是二叉树结构中的一种,他的特点是每一个 节点最多有小于等于2的子节点 ,子节点可以为0,1,2个,二叉查找树 节点的左节点的数的值是小于他当前 节点的值,同时也小于右节点的值(左节点值<当期前节点值<右节点值)。他支持前中后序遍历,其中中序遍历得到的结果是有序的。
2,代码实现
package tree;
/**
* @author ganxiang
* IDE IntelliJ IDEA
* @project_name and filename JavaDemo BinarySearchTree
* @date 2020/06/10 0010 15:30
*/
public class BinarySearchTree {
//定义二叉树结构
int data;
BinarySearchTree left;
BinarySearchTree right;
public BinarySearchTree(){
this.left=null;
this.right=null;
}
public BinarySearchTree(int data){
this.data=data;
this.left=null;
this.right=null;
}
public void insert(BinarySearchTree root,int data){
if (root.data<data){
if (root.right==null){
root.right= new BinarySearchTree(data);
} else {
insert(root.right,data);
}
}else {
if (root.left==null){
root.left= new BinarySearchTree(data);
}else {
insert(root.left,data);
}
}
}
//前序遍历
public static void beginSearch(BinarySearchTree tree){
if (tree!=null){
System.out.print(tree.data+",");
beginSearch(tree.left);
beginSearch(tree.right);
}
}
//中序遍历
public static void midSearch(BinarySearchTree tree){
if (tree!=null){
midSearch(tree.left);
System.out.print(tree.data+",");
midSearch(tree.right);
}
}
//后续遍历
public static void afterSearch(BinarySearchTree tree){
if (tree!=null){
afterSearch(tree.right);
System.out.print(tree.data+",");
afterSearch(tree.left);
}
}
public static void main(String[] args) {
int arr []={1,5,3,2};
BinarySearchTree tree =new BinarySearchTree(arr[0]);
for(int i=1;i<4;i++){
tree.insert(tree,arr[i]);
}
System.out.print("前序遍历后为:");
beginSearch(tree);
System.out.print("\n中序遍历后为:");
midSearch(tree);
System.out.print("\n后序遍历后为:");
afterSearch(tree);
}
}