java实现简单的二叉排序树

二叉排序树的定义:
二叉排序树(Binary Sort Tree)或者是一颗空树,或者是具有下列性质的二叉树:
1):若左子树不为空,则左子树上所有节点的值均小于根节点的值;若右子树不为空,则右子树上所有节点的值均大于根节点的值。

2):左右子树也都是二叉排序树。


一颗完整的二叉排序树
对二叉排序树进行中序遍历得到从小到大的序列
63,90,70,55,67,42,98,83,10,45,58构造二叉排序树的图解过程

二叉排序树的java实现代码:
public class BinSortTree {
	private BinSortTree lChild;// 左孩子
	private BinSortTree rChild;// 右孩子
	private BinSortTree parent;// 父节点
	private Integer data;// 数据域

	public BinSortTree(BinSortTree lChild, BinSortTree rChild, Integer data) {
		super();
		this.lChild = lChild;
		this.rChild = rChild;
		this.data = data;
	}

	public BinSortTree(Integer data) {
		this(null, null, data);
	}

	public BinSortTree() {
		super();
	}

	// 插入数据
	public boolean insert(BinSortTree tree, Integer item) {
		if (item < tree.data) {// 左边插入
			if (tree.lChild == null) {
				BinSortTree temp = new BinSortTree(item);
				tree.lChild = temp;
				temp.parent = tree;
				return true;
			} else {
				insert(tree.lChild, item);
			}
		} else if (item > tree.data) {// 右边插入
			if (tree.rChild == null) {
				BinSortTree temp = new BinSortTree(item);
				tree.rChild = temp;
				temp.parent = tree;
				return true;
			} else {
				insert(tree.rChild, item);
			}
		}
		return false;
	}

	// 中序遍历 (对于二叉排序树 相当于从小到大输出)
	public void inorder(BinSortTree tree) {
		if (tree != null) {
			inorder(tree.lChild);
			visit(tree.data);
			inorder(tree.rChild);
		}
	}

	private void visit(Integer data) {
		System.out.print(data + " ");
	}
}
测试代码:
public static void main(String[] args) {
		int[] arr={63,90,70,55,67,42,98,83,10,45,58};
		BinSortTree tree=new BinSortTree(arr[0]);//将第一个数字作为根节点
		for (int i : arr) {
			tree.insert(tree, i);
		}
		tree.inorder(tree);
}
运行结果:





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值