Dificuldade com apontadores

Oi. Preciso de ajuda para um programa que estou fazendo.
Há uma classe com os seguintes campos:

class Item{ String elemento=new String(); boolean cores; Item direita, esquerda; }

Se eu faço a operação:

Item A=new Item(); Item B=new Item(); A.elemento="a"; B.elemento="b"; B.direita=A; A.elemento="c"; System.out.println(B.direita.elemento);
O valor imprimido é “c”.
Porém se faço:

Item C=new Item(); C.elemento="c"; B.direita=A; A=C;
O valor imprimido é “a”.

Alguém sabe se isso é problema com os apontadores direita, esquerda. Como posso fazer com que no segundo caso o valor imprimido seja “c”?
Obrigado

Qdo vc faz B.direita=A; vc tá falando pra B.direita ser uma referência para o objeto em que A está referenciando, ou seja, B.direita e A apontam para o mesmo lugar.

Qdo vc faz A = C, vc tá falando pra A apontar pro mesmo lugar que o C está apontando, mas o B.direita vai continuar apontando pro objeto que o A estava apontando anteriormente, ou seja, A e C apontam para o mesmo lugar, mas B.direita aponta pro lugar antigo de A.

Se você fizer C = D (D seria um outro obj), A apontaria para o obj que C estaria apontando originalmente e C passaria a apontar pro mesmo objeto que D.

Vc pode ver isso colocando o seguinte código:

        System.out.println("a: " + A);
        System.out.println("c: " + C);
        A=C;
        System.out.println("a: " + A);
        System.out.println("c: " + C);
        System.out.println(B.direita);

Vai sair uma resposta do tipo:

a: teste12.Item@1add2dd
c: teste12.Item@eee36c
a: teste12.Item@eee36c
c: teste12.Item@eee36c
teste12.Item@1add2dd

Ou seja, a está referenciando para o mesmo objeto que c, mas b.direita continua referenciando para o objeto de a.

Pra imprimir c direto, é só vc fazer B.elemento = C, deve imprimir o valor de c.

[]'s
carisio

, mas cara o que você ta imprimindo?!isso?!

System.out.println(B.direita.elemento);

Se você estiver imprimindo isso…vai jogar o “a” mesmo…
Provavelmente se você colocar A.elemento=C; e depois colocar para imprimir o A.elemento ele irá imprimir o valor que você quer que é o “c” testa ai ve se da certo! blz?!
Falou cara![/code]

Obrigado pelas respostas.
Na verdade eu precisava de acessar o campo desta maneira mesmo. Preciso implementar uma árvore de pesquisa. E pra inserir itens preciso fazer algumas rotações.
Olha só o que esta acontecendo:
A arvore antes da rotação:

C A W T B U V
A arvore depois da rotação:

B C A V A W T U T U
Virou duas árvore.
Como era pra ficar:

C B W A V T U

Para aquelas duas árvores do meio virar a terceira, era necessário atruir B (da primeira) ao A (da segunda). Porém isso não esta funcionando.

C.esquerda = B ?

Na verdade não daria também, pois no caso de uma arvore menor, o “filho” poderia não ter “pai”.

Vou tentar explicar melhor pois o problema ainda esta incomodando:
Se eu faço:

C.esquerda=A; A=B;
Há alguma maneira de que o campo “esquerda” do C seja modificado para B?