Estou implementando arvore binaria de expressões aritméticas e gostaria de saber como guardar o ultimo node adicionado a ela sem ter de percorre-la para saber qual é este.
import java.util.Arrays;
import java.util.List;
public class Arvore{
private Node raiz;
public Arvore(){ }
public boolean ehOperador(Node node){
List<String> lista = Arrays.asList("+","-","*","/","^");
return lista.contains(node.getX());
}
private boolean isEmpty(){
if(raiz == null) return true;
else return false;
}
private String concatena(String part1,String part2){
return part1.concat(part2);
}
private String CharToString(char x){
return Character.toString(x);
}
public void inserir(String expressao){
for(int i=0; i<expressao.length(); i++){
String str = CharToString(expressao.charAt(i));
Node node = new Node(str);
inserir(node);
}
}
private void inserir(Node node){
if(isEmpty()) raiz = node;
if(ehOperador(node)){
node.setNodeEsquerda(raiz);
raiz = node;
}else{
if(raiz.getNodeEsquerda() == null) raiz.setNodeEsquerda(node);
else raiz.setNodeDireita(node);
}
//Aqui é o ponto onde eu adicionei e quero marcar como ultimo para que eu
//possa comparar com o próximo a ser inserido
}
}
Preciso comparar o atual com o ultimo adicionado pois se ambos não forem operadores aritméticos if(!ehOperador(ultimo) && !ehOperador(node)) eu preciso concatená-los, formando um único número.
Desde já, agradeço pela atenção.
OBS: A classe Node contem somente métodos getters e setters básicos com os atributos: Node esquerda, Node direita e String x.