JAVA数据结构之二叉排序树

package test;

import java.util.Scanner;

class Node
{
	public int num;
	public Node left;
	public Node right;
	
	Node(int i)
	{
		this.num=i;
		left = null;
		right = null;
	}
}

public class Tree {
	private static Node root;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();//输入节点个数
		int[] a = new int[n];
		for(int i = 0;i<n;i++)
		{
			a[i]=sc.nextInt();
		}
		root = new Node(a[0]);//创建根节点
		createTree(a);//创建二叉排序树
		InOrderTraverse(root);//中序遍历
		int num = sc.nextInt();
		search(root, num);
		InOrderTraverse(root);
	}
	
	/*创建节点*/
	public static Node createNode(int a)
	{
		Node node = new Node(a);
		return node;
	}
	
	/*创建二叉排序树*/
	public static void createTree(int[] a)
	{
		for(int i=1;i<a.length;i++)
		{
			insert(root, createNode(a[i]));
		}
		System.out.println("success!");
	}
	
	/*节点插入*/
	public static void insert(Node root,Node node)
	{
		if(root.num>node.num)
		{
			if(root.left==null)
				root.left=node;
			else
				insert(root.left, node);
		}else if(root.num<node.num)
		{
			if(root.right==null)
				root.right=node;
			else
				insert(root.right,node);
		}else
			return;
	}
	
	
	/*中序遍历*/
	public static void InOrderTraverse (Node root)
	{
		if(root!=null)
		{
			InOrderTraverse(root.left);
			System.out.print(root.num+" ");
			InOrderTraverse(root.right);
		}
	}
	
	/*查找*/
	public static void search(Node node,int num)
	{
		if(node!=null)
		{
			if(node.num==num)
			{
				System.out.println("查找成功");
				return;
			}else if(node.num>num)
			{
				search(node.left,num);
			}else
			{
				search(node.right, num);
			}
		}
		else
		{
			System.out.println("不存在"+num+"现在进行插入...");
			insert(root, createNode(num));
		}
	}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值