用java实现二叉查找树、堆和优先队列
作者:网络转载 发布时间:[ 2013/2/6 9:48:31 ] 推荐标签:
二叉查找树是以一种特殊的二叉树。它的特征是,没一个节点左子树中结点的值都小于该结点的值,右子树中结点的值都大于该结点的值。
二叉查找树的主要操作是插入元素、删除元素、遍历元素。
插入元素:如果二叉树是空的,使用新元素创建一个根节点;否则,为新元素寻找父节点。如果新元素的值小于父节点的值,则将新元素的结点设置为父节点的左孩子;否则,将其设为右孩子。
遍历元素:遍历主要有中序、前序、后序、深度优先、广度优先等。
下面这个类包括了结点的定义还有二叉树的定义。
package binaryTree;
public class BinaryTree {
// 节点的定义
private static class TreeNode {
Object element;
TreeNode left;
TreeNode right;
public TreeNode(Object o) {
element = o;
}
}
private TreeNode root;
private int size = 0;
public BinaryTree() {
}
public BinaryTree(Object[] objects) {
for (int i = 0; i < objects.length; i++) {
insert(objects[i]);
}
}
public boolean insert(Object o) {
if (root == null) {
root = new TreeNode(o);
} else {
TreeNode parent = null;
TreeNode current = root;
while (current != null) {
if (((Comparable) o).compareTo(current.element) < 0) {
parent = current;
current = current.left;
} else if (((Comparable) o).compareTo(current.element) > 0) {
parent = current;
current = current.right;
} else {
return false;
}
}
if (((Comparable) o).compareTo(parent.element) < 0) {
parent.left = new TreeNode(o);
} else {
parent.right = new TreeNode(o);
}
}
size++;
return true;
}
//中序遍历
public void inorder(){
inorder(root);
}
public void inorder(TreeNode root){
if (root == null) {
return;
}
inorder(root.left);
System.out.println(root.element + " ");
inorder(root.right);
}
//后序遍历
public void postorder(){
postorder(root);
}
public void postorder(TreeNode root){
if (root == null) {
return;
}
postorder(root.left);
postorder(root.right);
System.out.println(root.element +" ");
}
//前序遍历
public void preorder(){
preorder(root);
}
public void preorder(TreeNode root){
if (root == null) {
return;
}
System.out.println(root.element + " ");
preorder(root.left);
preorder(root.right);
}
public int getSize(){
return size;
}
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11