Я понимаю двоичное дерево поиска для целых чисел, потому что я знаю, что левый дочерний элемент должен быть меньше узла, а правый дочерний элемент должен быть больше узла, когда дело доходит до типа «char» или «string», это совершенно другое В этом случае мы не можем произносить ('a' < 'b') или любые другие логические операции.
как я могу сравнить значения символов?!
Это мое двоичное дерево http://share.pho.to/89JtW я не мог работать, потому что каждый раз, когда я вставляю в свой код, все узлы вставляются справа от подузла.
узлы представляют страницы, я хочу проверить каждую страницу, чтобы определить, является ли пользователь человеком или спам-ботом.
каждая страница может быть связана с еще двумя страницами. Человек будет перемещаться по
веб-странице таким образом, что сможет перейти на предыдущую страницу или на одну из следующих двух страниц, на которые он связан. В противном случае они будут отнесены к категории спам-ботов.
И этот код я пытаюсь реализовать
package stringBtree;
public class StringBinaryTreeSample {
public static void main(String[] args)
{
new StringBinaryTreeSample().run();
}
static class Node
{
Node left;
Node right;
char value;
public Node(char value) {
this.value = value;
}
}
public void run() {
Node rootnode = new Node('A');
System.out.println("Building tree with rootvalue " + rootnode.value);
System.out.println("=================================");
insert(rootnode, 'b' );
insert(rootnode, 'd' );
insert(rootnode, 'c');
insert(rootnode, 'd');
insert(rootnode, 'e' );
insert(rootnode, 'f');
insert(rootnode, 'g');
insert(rootnode, 'h');
insert(rootnode, 'i');
insert(rootnode, 'j');
insert(rootnode, 'k');
insert(rootnode, 'l');
insert(rootnode, 'm');
insert(rootnode, 'n');
insert(rootnode, 'o');
insert(rootnode, 'p');
insert(rootnode, 'q');
System.out.println("\n\nTraversing tree in order");
System.out.println("=================================");
printInOrder(rootnode);
}
public void insert(Node node, char value) {
if (value < node.value) {
if (node.left != null) {
insert(node.left, value);
} else {
System.out.println(" Inserted " + value + " to left of node " + node.value);
node.left = new Node(value);
}
} else if (value > node.value) {
if (node.right != null) {
insert(node.right, value);
} else {
System.out.println(" Inserted " + value + " to right of node " + node.value);
node.right = new Node(value);
}
}
}
public void printInOrder(Node node) {
if (node != null) {
printInOrder(node.left);
System.out.println(" Traversed " + node.value);
printInOrder(node.right);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/272 ... -char-type
Двоичное дерево поиска с использованием типа char ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение