Files
004_comission/_resources/it114105/itp4510/Lab03/Lab3.4/StringBst.java
louiscklaw 6c60a73f30 update,
2025-01-31 19:15:17 +08:00

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() + " ");
}
}