二叉排序树的插入创建与查找


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;
			}
		}
	}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈健_算法小生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值