У меня есть двоичное дерево на Java, которое прекрасно работает. Но я хочу улучшить содержимое данных в узле. В настоящее время я могу добавить к нему значения, например:
for( int i = 1; i <=10; i++ )
t.insert( new Integer( i ) );
Что добавит такой элемент:
public void insert( Comparable item ) {
current = parent = grand = header;
nullNode.element = item;
...
}
Вот формат дерева:
private static class RedBlackNode {
// Constructors
RedBlackNode( Comparable theElement ) {
this( theElement, null, null );
}
RedBlackNode( Comparable theElement, RedBlackNode lt, RedBlackNode rt ) {
element = theElement;
left = lt;
right = rt;
color = RedBlackTree.BLACK;
}
Comparable element; // The data in the node
RedBlackNode left; // Left child
RedBlackNode right; // Right child
int color; // Color
}
Для показа дерева мне это нравится:
private void printTree( RedBlackNode t ) {
if( t != nullNode ) {
printTree( t.left );
System.out.println(t.element);
printTree( t.right );
}
}
При программировании на многих других языках элемент будет объявлен как структура для этот образец кода в Java объявлен как Comparable, и в настоящее время принимает только один элемент как целое число. Мой вопрос в том, как я могу использовать его аналогично структуре, чтобы иметь возможность также манипулировать ею, например, в этом псевдокоде:
System.out.println(t.element.valueInt);
System.out.println(t.element.firstNameString);
System.out.println(t.element.lastNameString);
Я пробовал разные комбинации синтаксиса на основе некоторых предыдущих сообщений, но пока ни одна из них не сработала.
Для текущей версии кода с добавленными комментариями проверьте Gist.
Мы глубоко признательны за все предложения.