90 lines
2.1 KiB
Java
90 lines
2.1 KiB
Java
public class StringBst {
|
|
private StringBstNode root;
|
|
|
|
public StringBst() {
|
|
root = null;
|
|
}
|
|
|
|
public void addNode(String data) {
|
|
StringBstNode p = root, prev = null;
|
|
if (root == null) {
|
|
root = new StringBstNode(data);
|
|
return;
|
|
}
|
|
while (p != null) {
|
|
prev = p;
|
|
if (data.compareTo(p.getData()) < 0) {
|
|
p = p.getLeft();
|
|
} else {
|
|
p = p.getRight();
|
|
}
|
|
}
|
|
if (data.compareTo(prev.getData()) < 0) {
|
|
prev.setLeft(new StringBstNode(data));
|
|
} else {
|
|
prev.setRight(new StringBstNode(data));
|
|
}
|
|
}
|
|
|
|
public String search(String data) {
|
|
StringBstNode p = root;
|
|
if (root == null) {
|
|
return null;
|
|
}
|
|
while (p!=null) {
|
|
if (data.compareTo(p.getData()) < 0) {
|
|
p = p.getLeft();
|
|
} else if(data.compareTo(p.getData()) > 0){
|
|
p = p.getRight();
|
|
}
|
|
else{
|
|
return p.getData();
|
|
}
|
|
}
|
|
return null;
|
|
|
|
}
|
|
|
|
public void preorder() {
|
|
preorder(root);
|
|
}
|
|
|
|
public void preorder(StringBstNode v) {
|
|
System.out.print(v.getData() + " ");
|
|
if (v.getLeft() != null) {
|
|
preorder(v.getLeft());
|
|
}
|
|
if (v.getRight() != null) {
|
|
preorder(v.getRight());
|
|
}
|
|
}
|
|
|
|
public void inorder() {
|
|
inorder(root);
|
|
}
|
|
|
|
public void inorder(StringBstNode v) {
|
|
if (v.getLeft() != null) {
|
|
inorder(v.getLeft());
|
|
}
|
|
System.out.print(v.getData() + " ");
|
|
if (v.getRight() != null) {
|
|
inorder(v.getRight());
|
|
}
|
|
}
|
|
|
|
public void postorder() {
|
|
postorder(root);
|
|
}
|
|
|
|
public void postorder(StringBstNode v) {
|
|
if (v.getLeft() != null) {
|
|
postorder(v.getLeft());
|
|
}
|
|
if (v.getRight() != null) {
|
|
postorder(v.getRight());
|
|
}
|
|
System.out.print(v.getData() + " ");
|
|
}
|
|
}
|