二叉排序树_Java简单实现
来源:互联网 发布:网络布控中心 编辑:程序博客网 时间:2024/05/22 07:40
动态查找过程中需要进行插入和删除操作,如果采用线性表顺序存储的话,这些操作很费时,因此二叉排序树是一个很好的解决方案。
二叉排序树(也成为二叉查找树),具有下列性质:如果它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;如果它的右子树不空,则右子树上的所有节点的值均小于它的更节点的值,下面是一个Java程序实现的二叉查找树。
package search;
class Node<T> {
private T value;
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public Node<T> getL_child() {
return l_child;
}
public void setL_child(Node<T> l_child) {
this.l_child = l_child;
}
public Node<T> getR_child() {
return r_child;
}
public void setR_child(Node<T> r_child) {
this.r_child = r_child;
}
private Node<T> l_child;
private Node<T> r_child;
public Node() {
}
public Node(T t) {
value = t;
}
}
public class BinarySearch {
// test main method
public static void main(String[] args) {
int[] array = { 19, 12, 3, 22, 6, 7, 21, 11, 43 };
Node<Integer> root = new Node<Integer>(array[0]);
for (int i = 1; i < array.length; i++) {
binarySort(root, array[i]);
}
// look this binary tree
inOrderTraverse(root);
if (binarySerach(root, 12)) {
System.out.println("二叉树中存在此元素");
} else {
System.out.println("二叉树中不存在该元素");
}
}
// 二叉排序树插入操作
public static void binarySort(Node<Integer> root, int key) {
int value = root.getValue();
if (key < value) {
if (root.getL_child() == null) {
Node<Integer> r = new Node<Integer>(key);
root.setL_child(r);
} else {
binarySort(root.getL_child(), key);
}
} else {
if (root.getR_child() == null) {
Node<Integer> r = new Node<Integer>(key);
root.setR_child(r);
} else {
binarySort(root.getR_child(), key);
}
}
}
public static boolean binarySerach(Node<Integer> root, int key) {
if (root == null) {
// throw new NullPointerException();
return false;
} else if (root.getValue() == key) {
return true;
} else if (root.getValue() < key) {
return binarySerach(root.getR_child(), key);
} else {
return binarySerach(root.getL_child(), key);
}
}
//中序遍历
public static void inOrderTraverse(Node<Integer> root) {
if (root == null) {
return;
}
inOrderTraverse(root.getL_child());
System.out.println(root.getValue());
inOrderTraverse(root.getR_child());
}
}
- 二叉排序树_Java简单实现
- 二叉排序树的简单实现
- 二叉排序树的简单实现
- 简单实现的二叉排序树
- 二叉排序树的简单实现
- 二叉排序树的一个简单实现
- 二叉排序树实现简单的通讯录
- java实现简单的二叉排序树
- HttpServer的简单实现_Java
- C语言指针实现简单二叉排序树
- 黑马程序员_Java简单程序的实现
- 二叉排序树实现
- 实现二叉排序树
- 实现二叉排序树
- pascal语言实现二叉排序树
- 二叉排序树的实现
- 二叉排序树 C语言实现
- C实现二叉排序树
- 用cocos2d3.0写一个srpg游戏-开篇
- GPIO读写
- 循环使用正则导致进程挂起和CPU使用率达到100%居高不下测试Demo
- 不夜之夜
- 仙人路 - 创业大佬之马云北大演讲:阿里为何不设班车
- 二叉排序树_Java简单实现
- hibernate 多对一关系映射
- linux中__iomem的意义
- c++ 中的集合类
- C#使用POI把DataGridView中数据导出到excel文档中
- CKEditor图片上传实现详细步骤(使用Struts 2)
- 解决MongoDB导入csv格式含中文的文档编码报错
- linux设置关闭省电模式
- 计算机网络最主要的两个性能指标