您的位置:首页 > 编程语言 > Java开发

二叉查找树(三)之 Java的实现

2014-03-28 09:43 2176 查看

概要

在前面分别介绍了"二叉查找树的相关理论知识,然后给出了二叉查找树的C和C++实现版本"。这一章写一写二叉查找树的Java实现版本。

目录

1. 二叉树查找树
2. 二叉查找树的Java实现
3. 二叉查找树的Java测试程序

转载请注明出处:https://www.geek-share.com/detail/2606970982.html

更多内容: 数据结构与算法系列 目录

(01) 二叉查找树(一)之 图文解析 和 C语言的实现
(02) 二叉查找树(二)之 C++的实现
(03) 二叉查找树(三)之 Java的实现


二叉查找树简介

二叉查找树(Binary Search Tree),又被称为二叉搜索树。
它是特殊的二叉树:对于二叉树,假设x为二叉树中的任意一个结点,x节点包含关键字key,节点x的key值记为key[x]。如果y是x的左子树中的一个结点,则key[y] <= key[x];如果y是x的右子树的一个结点,则key[y] >= key[x]。那么,这棵树就是二叉查找树。如下图所示:

/**
* Java 语言: 二叉查找树
*
* @author skywang
* @date 2013/11/07
*/
public class BSTreeTest {

private static final int arr[] = {1,5,4,3,2,6};

public static void main(String[] args) {
int i, ilen;
BSTree<Integer> tree=new BSTree<Integer>();

System.out.print("== 依次添加: ");
ilen = arr.length;
for(i=0; i<ilen; i++) {
System.out.print(arr[i]+" ");
tree.insert(arr[i]);
}

System.out.print("\n== 前序遍历: ");
tree.preOrder();

System.out.print("\n== 中序遍历: ");
tree.inOrder();

System.out.print("\n== 后序遍历: ");
tree.postOrder();
System.out.println();

System.out.println("== 最小值: "+ tree.minimum());
System.out.println("== 最大值: "+ tree.maximum());
System.out.println("== 树的详细信息: ");
tree.print();

System.out.print("\n== 删除根节点: "+ arr[3]);
tree.remove(arr[3]);

System.out.print("\n== 中序遍历: ");
tree.inOrder();
System.out.println();

// 销毁二叉树
tree.clear();
}
}


View Code
在二叉查找树的Java实现中,使用了泛型,也就意味着支持任意类型; 但是该类型必须要实现Comparable接口。

二叉查找树的Java测试程序

上面的BSTreeTest.java是二叉查找树树的测试程序,运行结果如下:

== 依次添加: 1 5 4 3 2 6
== 前序遍历: 1 5 4 3 2 6
== 中序遍历: 1 2 3 4 5 6
== 后序遍历: 2 3 4 6 5 1
== 最小值: 1
== 最大值: 6
== 树的详细信息:
1 is root
5 is  1's  right child
4 is  5's   left child
3 is  4's   left child
2 is  3's   left child
6 is  5's  right child

== 删除根节点: 3
== 中序遍历: 1 2 4 5 6


下面对测试程序的流程进行分析!

(01) 新建"二叉查找树"root。

(02) 向二叉查找树中依次插入1,5,4,3,2,6 。如下图所示:





(03) 遍历和查找
插入1,5,4,3,2,6之后,得到的二叉查找树如下:





前序遍历结果: 1 5 4 3 2 6
中序遍历结果: 1 2 3 4 5 6
后序遍历结果: 2 3 4 6 5 1
最小值是1,而最大值是6。

(04) 删除节点4。如下图所示:





(05) 重新遍历该二叉查找树。
中序遍历结果: 1 2 4 5 6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: