`

JAVA数据结构之二叉排序数

 
阅读更多

先定义树的节点类

package Tree;

/**
 * 树节点
 * @author Huangbin
 * d2014年7月18日
 */
public class Tree {

	Object obj;//内容
	Tree parent;//父节点
	Tree lchild;//左孩子节点
	Tree rchild;//右孩子节点

	public Tree(Object obj) {
		this.obj = obj;
	}

	public String toString() {
		return "" + obj;
	}
}

 

生成30个随机数,取第一个作为根节点,一次放入剩余29个数字。小的放左边大的放右边。使用中序遍历后就是排好序的了。

 

package Tree;

import java.util.Random;

/**
 * 二叉树
 * 
 * @author Huangbin
 * @data 2014年7月18日
 */
public class Main {

	public static void main(String[] args) {
		Main mu = new Main();
		int[] a = mu.creatArray();

		Tree root = new Tree(a[0]);// 取第一个元素建立树
		for (int i = 1; i < a.length; i++) {
			mu.put(a[i], null, root);//将第一个节点放进去,当作孩子节点,在put方法中会当作父节点。
		}
		mu.preOrderDisplay(root);
		System.out.println();
		mu.inOrderDisplay(root);// 中序遍历变成排序树
		System.out.println();
		mu.postOrderDisplay(root);
	}

	/**
	 * 创建30个数的数组
	 * 
	 * @return
	 */
	public int[] creatArray() {
		int arr[] = new int[30];
		Random rd = new Random();
		for (int i = 0; i < 30; i++) {
			arr[i] = rd.nextInt(100);
		}
		return arr;
	}

	/**
	 * 将元素放入树temp中生成二叉排序树
	 * 
	 * @param key
	 *            元素值
	 * @param root
	 *            临时保存父节点
	 * @param temp
	 *            将要放的位置(开始时候传入根节点)
	 */
	public void put(int key, Tree root, Tree temp) {
		if (temp == null) {// 找到了空位
			temp = new Tree(key);// 不存在就创建节点并结束方法
			if (key < (int) root.obj) {// 注意这个判断条件,在这个里面进行节点之间关系的链接
				root.lchild = temp;
			} else {
				root.rchild = temp;
			}
			temp.parent = root;
		} else {
			if (key < (int) temp.obj) {// 小于根节点放到左边去递归
				put(key, temp, temp.lchild);
			} else if (key > (int) temp.obj) {
				put(key, temp, temp.rchild);// 大于等于放右边去递归
			}
		}
	}

	/**
	 * 中序遍历
	 * 
	 * @param root
	 */
	public void inOrderDisplay(Tree root) {
		Tree tree = root;
		if (tree != null) {
			inOrderDisplay(tree.lchild);
			System.out.print(tree + " ");
			inOrderDisplay(tree.rchild);
		}
	}

	/**
	 * 先序遍历树root
	 * 
	 * @param root
	 */
	public void preOrderDisplay(Tree root) {
		Tree tree = root;
		if (tree != null) {
			System.out.print(tree + " ");
			preOrderDisplay(tree.lchild);
			preOrderDisplay(tree.rchild);
		}
	}

	/**
	 * 后续遍历树root
	 * 
	 * @param root
	 */
	public void postOrderDisplay(Tree root) {
		Tree tree = root;
		if (tree != null) {
			postOrderDisplay(tree.lchild);
			postOrderDisplay(tree.rchild);
			System.out.print(tree + " ");
		}
	}

}

运行结果:
88 49 23 15 38 27 26 28 32 48 42 54 50 67 65 62 57 58 66 80 75 76 82 86 85 
15 23 26 27 28 32 38 42 48 49 50 54 57 58 62 65 66 67 75 76 80 82 85 86 88 
15 26 32 28 27 42 48 38 23 50 58 57 62 66 65 76 75 85 86 82 80 67 54 49 88 

 

0
0
分享到:
评论

相关推荐

    数据结构之二叉排序树的生成

    在“数据结构之二叉排序树的生成”这个程序中,我们可以深入理解二叉排序树的构建过程和相关操作。首先,我们需要初始化一个空的二叉树。这通常通过创建一个空的根节点来实现,根节点没有左右子节点。初始化操作是...

    Java实现二叉排序树

    二叉排序树(Binary Sort Tree,BST),也称为二叉搜索树,是一种特殊的二叉树数据结构,它的每个节点都包含一个键(key)、一个关联的值、一个指向左子节点的指针和一个指向右子节点的指针。在二叉排序树中,对于...

    数据结构 二叉排序树 java图形界面实现

    总的来说,`BiSortTreeGui.java`文件通过Java Swing库实现了二叉排序树的数据结构,并结合GUI,使得用户可以直观地进行数据的插入、查找和删除操作,这在教学或实践数据结构时非常有帮助。这个项目展示了如何将抽象...

    数据结构(二叉平衡排序树)课程设计报告

    数据结构是计算机科学中的核心概念,它涉及到如何高效地存储...通过这次课程设计,你不仅将深入理解二叉平衡排序树的原理,还将锻炼到实际问题的解决能力和编程技巧,为未来在数据结构与算法领域的发展打下坚实的基础。

    数据结构二叉排序树及其操作实验报告

    数据结构是计算机科学中的核心课程,它探讨了如何有效地存储和检索数据,以优化...这个实验报告提供了一个实用的框架,可以帮助其他学生理解和实现二叉排序树的各种操作,进一步巩固他们在数据结构课程中的学习成果。

    二叉排序树增删改查

    二叉排序树(Binary Sort Tree,BST),也称为二叉搜索树,是一种特殊的二叉树数据结构,它具有以下特性: 1. 每个节点包含一个键(key)、一个关联的值、一个指向左子节点的引用和一个指向右子节点的引用。 2. ...

    java实现二叉排序树

    二叉排序树(Binary Search Tree,BST),也称为二叉查找树或有序二叉树,是一种自平衡的二叉树数据结构。在二叉排序树中,每个节点都包含一个键值,对于任意节点,其左子树中的所有节点的键值小于该节点的键值,而...

    java--实现二叉排序树

    二叉排序树(Binary Search Tree,BST)是一种特殊的二叉树数据结构,它具有以下特性: 1. 每个节点包含一个键(key)、一个关联的值、一个指向左子节点的引用和一个指向右子节点的引用。 2. 节点的键大于其左子树...

    二叉排序树问题

    **二叉排序树问题**是数据结构课程设计中常见的一个课题,旨在让学生深入理解并实践二叉树、查找表的逻辑结构和存储结构。在这个任务中,学生需要设计一个程序来实现二叉排序树的基本操作,同时提升自身的编程能力和...

    java课程设计二叉排序树

    二叉排序树(Binary Sort Tree...在Java课程设计中,理解并实现二叉排序树不仅有助于掌握数据结构与算法,还能提高解决问题的能力。通过实际操作,学生可以深入理解二叉树的性质,并学会如何在实际场景中应用这些知识。

    数据结构课设 赛事管理系统 二叉排序树 导航 排序 叫号

    在这个“数据结构课设 赛事管理系统”中,我们重点研究了二叉排序树(Binary Sort Tree,BST),这是一种重要的数据结构,特别适用于排序和导航任务。以下是关于二叉排序树及其在赛事管理系统中应用的详细知识点: ...

    java 二叉排序树与平衡二叉树的实现

    二叉排序树(Binary Sort Tree,BST)是一种特殊的二叉树数据结构,它的每个节点都包含一个键(key)、一个值、一个指向左子树的指针和一个指向右子树的指针。在二叉排序树中,任何节点的左子树只包含键小于当前节点...

    构造二叉排序树

    二叉排序树(Binary Sort Tree,BST),也称为二叉查找树或二叉搜索树,是一种特殊的二叉树数据结构,它...通过熟练掌握二叉排序树的原理和实现,你可以更好地理解和运用Java中的数据结构,从而提高程序的性能和效率。

    二叉排序树查找算法

    二叉排序树(Binary Search Tree,BST),也称为二叉查找树或有序二叉树,是一种自平衡的二叉树数据结构,它在处理搜索、插入和删除操作时具有较高的效率。二叉排序树的主要特点是:对于任意节点,其左子树中的所有...

    java二叉排序

    总之,“java二叉排序”结合了数据结构(二叉搜索树)和数据交换格式(XML),提供了在Java环境中对整数序列进行排序并将其持久化到XML文档的方法。这样的练习可以帮助开发者深化对两者概念的理解,并提高解决问题的...

    数据结构课程设计,基于二叉排序树的员工信息管理系统

    总结来说,这个课程设计不仅让学生掌握了二叉排序树的基本概念,还让他们了解到如何在实际问题中应用数据结构,提高了他们的编程和问题解决能力。通过对"员工信息管理系统"的实现,学生可以深化对数据结构的理解,...

    数据结构 综合性实验 实现二叉排序树的各种算法功能 有源码 有实验报告

    在本实验中,我们将深入探讨数据结构中的一个重要概念——二叉排序树(Binary Sort Tree,BST),这是一种特殊的二叉树,具有高效的查找、插入和删除操作。二叉排序树的特性是左子树上的所有节点的值都小于根节点,...

    二叉排序树操作。。。。。

    二叉排序树,又称二叉查找树或二叉搜索树,是一种特殊的二叉树数据结构,它具有以下特性:每个节点的左子树只包含比该节点小的元素,而右子树则只包含比该节点大的元素。这种结构使得在二叉排序树中进行查找、插入和...

    java 实现二叉排序树 堆

    二叉排序树(Binary Sort Tree,BST),也称为二叉查找树或有序二叉树,是一种自平衡的二叉树数据结构。它在处理搜索、插入和删除操作时具有较高的效率,尤其对于有序数据。在二叉排序树中,每个节点的左子树只包含...

    写一算法,判断一棵二叉树是否是一棵二叉排序树。

    二叉排序树是一种非常重要的数据结构,在实际应用中有着广泛的应用场景,比如用于实现高效的查找、插入和删除操作。 #### 性质概述 - **左小右大**:对于任意节点而言,其左子树的所有节点的值都不大于该节点的值,...

Global site tag (gtag.js) - Google Analytics