public class BinarySearchTree {
private Comparable value;
private BinarySearchTree right;
private BinarySearchTree left;
public BinarySearchTree(Comparable setValue) {
value = setValue;
}
public BinarySearchTree(Comparable[] values) {
assert values.length > 0;
value = values[0];
for (int i = 1; i < values.length; i++) {
add(values[i]);
}
}
private void add(Comparable newValue) {
if (value.compareTo(newValue) > 0) {
if (right == null) {
right = new BinarySearchTree(newValue);
} else {
right.add(newValue);
}
} else {
if (left == null) {
left = new BinarySearchTree(newValue);
} else {
left.add(newValue);
}
}
}
public boolean findValue(Comparable lookingFor) {
return findValue(this, lookingFor);
}
private static boolean findValue(BinarySearchTree tree, Comparable lookingFor) {
if (tree == null) {
return false;
}
System.out.println(tree.value);
if (tree.value.equals(lookingFor)) {
return true;
}
if (tree.value.compareTo(lookingFor) > 0) {
return findValue(tree.right, lookingFor);
} else {
return findValue(tree.left, lookingFor);
}
}
}
二叉树搜索 JAVA实现
最新推荐文章于 2024-07-15 22:27:18 发布