二叉搜索树的实现及测试
在 Java 数据结构教程中,二叉搜索树(Binary Search Tree)是一个非常重要的数据结构。本文将介绍如何使用 Java 实现二叉搜索树,并提供代码和测试用例。
创建树的节点类
在 Java 中,我们可以通过创建一个 TreeNode 类来定义树的节点。每个节点都有一个数据域、一个左子节点和一个右子节点。以下是 TreeNode 类的代码:
```java
public class TreeNode
T data;
TreeNode
TreeNode
public TreeNode(T data) {
data;
left right null;
}
}
```
创建二叉搜索树的类
接下来,我们需要创建一个 BinarySearchTree 类来定义二叉搜索树。在这个类中,我们使用了泛型来支持不同类型的数据。使用泛型的好处是可以进行比较。
以下是 BinarySearchTree 类的代码:
```java
public class BinarySearchTree
TreeNode
public BinarySearchTree() {
null;
}
/
* 插入一个元素值;
* @param data
*/
public void insert(T data){
root insert(data, root);
}
protected TreeNode
if(node null)
node new TreeNode
else if(() < 0){
node.left insert(data,node.left);
}else{
node.right insert(data,node.right);
}
return node;
}
public void createTree(T[] datas){
for(int i0; i insert(datas[i]); } } / * 遍历;递归遍历,先序; */ public void preOrder(){ preOrder(root); } protected void preOrder(TreeNode if(node null) return; ( " "); preOrder(node.left); preOrder(node.right); } / * findMin 递归解法 */ public T findMin(){ TreeNode return ; } protected TreeNode if(node.leftnull) return node; return findMin(node.left); } / * findMax 递归解,非递归解 */ public T findMax(){ TreeNode return ; } protected TreeNode if(node.rightnull) return node; return findMax(node.right); } / * removeMin */ protected TreeNode if(nodenull) throw new RuntimeException("空树"); else if(node.left!null){ node.left removeMin(node.left); return node; }else{ return node.right; } } protected TreeNode if(() < 0){ node.left remove(data, node.left); }else if(() > 0){ node.right remove(data, node.right); }else if(node.left!null node.right!null){ //有两个孩子,删除此节点比较麻烦 findMin(node).data; node.right removeMin(node.right); }else{ node (node.left!null)?node.left:node.right; } return node; } } ``` 编写测试用例 最后,我们需要编写测试用例来验证二叉搜索树是否正常工作。以下是测试用例的代码: ```java import org.junit.Test; public class BinarySearchTreeTest { @Test public void testInsert() { BinarySearchTree Integer[] datas {2,8,7,4,9,9,3,1,6,7,5}; (datas); (); } @Test public void testFindMin() { BinarySearchTree Integer[] datas {2,8,7,4,9,3,1,6,7,5}; (datas); ("最小值 " ()); } @Test public void testFindMax() { BinarySearchTree Integer[] datas {2,8,7,4,9,9,3,1,6,7,5}; (datas); ("最大值 " ()); } } ``` 以上就是关于 Java 数据结构教程之二叉搜索树的实现及测试的内容。希望能够对你的学习有所帮助。 版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。