import java.util.Scanner;
public class BinarySortTree{
private static int flag=0;
//定义结点
public static class Node{
private int data;
private Node left=null;
private Node right=null;
public Node(int data){
this.data=data;
}
//用插入算法创建二叉查找树
public static void insert(Node node,int data){
if(data>node.data){
if(node.right==null){
node.right=new Node(data);
}else{
insert(node.right,data);
}
}else if(data<node.data){
if(node.left==null){
node.left=new Node(data);
}else{
insert(node.left,data);
}
}
}
//中序遍历输出
public static void midPrint(Node root){
if(root.left!=null){
midPrint(root.left);
}
System.out.print(root.data+" ");
if(root.right!=null){
midPrint(root.right);
}
}
//查找函数
public static void search(Node root,int data){
//System.out.println(root.data);
if(root.data ==data){
flag=1;
}
if(data>root.data && root.right!=null ){
search(root.right,data);
}
if(data<root.data && root.left!=null){
search(root.left,data);
}
}
public static void main(String[] args) {
//{37,56,05,13,19,21, 64, 88, 75,80,92}
int[] a={37,56,05,13,19,21, 64, 88, 75,80,92};
System.out.println("要创建的数组为:{37,56,05,13,19,21, 64, 88, 75,80,92}");
Node root=new Node(37);
for(int i=1;i<a.length;i++){
insert(root,a[i]);
}
System.out.println("创建好的二叉排序树中序遍历结果为:");
midPrint(root);
System.out.println("请输入要查找的数字:");
int n=3;
Scanner in=new Scanner(System.in);
while(n-->0){
int data=in.nextInt();
search(root,data);
if(flag==1){
System.out.println("查找成功");
}else{
System.out.println("查找失败");
}
flag=0;
}
}
}
}