我正在为我正在研究的项目创建二叉树的过程,我按名称将人们插入到二叉树中(树遍历每个字符以确定插入时哪个更大)。有没有办法让我的树搜索树,找到一个匹配程序名称的人。到目前为止,这是我的代码
lass Node {
private String person;
private Node left;
private Node right;
public Node(String person) {
this.person = person;
left = null;
right = null;
}
//setters
protected void setLeft(Node left) {
this.left = left;
}
protected void setRight(Node right) {
this.right = right;
}
//getters
protected String getPerson() {
return person;
}
protected Node getLeft() {
return left;
}
protected Node getRight() {
return right;
}
}
public class BinaryTree {
private static Node root;
public BinaryTree() {
root = null;
}
public void insert(String person) {
root = insert(person, root);
}
//Check if node is leaf
public static boolean isLeaf() {
if(root.getLeft() == null && root.getRight() == null)
return false;
else
return true;
}
// Search tree for entered value
public static void searchTree(String search, Node tNode) {
// Not sure what to put into the part to make the method search through people in the tree
}
private Node insert(String person, Node tree) {
if(tree == null)
tree = new Node(person);
else {
int count = 1;
int x = 0;
while(person.toLowerCase().charAt(x) == tree.getPerson().toLowerCase().charAt(x) && count != tree.getPerson().length()) {
count = count + 1;
x = x + 1;
}
if(person.toLowerCase().charAt(x) != tree.getPerson().toLowerCase().charAt(x)) {
if(person.toLowerCase().charAt(x) < tree.getPerson().toLowerCase().charAt(x))
tree.setLeft(insert(person, tree.getLeft()));
else
tree.setRight(insert(person, tree.getRight()));
} else {
tree.setRight(insert(person, tree.getRight()));
}
}
return tree;
}
您能否建议我应该如何创建一种搜索树的方法
答案 0 :(得分:0)
我建议你做这些步骤。这些步骤将为您提供一个开始。
答案 1 :(得分:0)
如果您正在尝试实现二进制搜索树,则需要更改setter中的代码以确定是否每次将这些方法添加到左侧或右侧节点(通过按字典顺序比较字符串)叫做。如果未订购树,则必须搜索每个节点。订购后,您将能够在日志时间内进行搜索。