Arvore binaria com precedencia de parenteses (expressao logica)

olá

quebrei a cabeça mas nao consegui implementar uma forma de montar uma arvore binária a partir de um vetor de strings (porque existem operadores que usam mais de 1 char ex: “->” ou “<->”), para expressoes logicas

Exemplo:

para a expressao: “V & (F->V)”, após o tratamento o vetor de strings ficaria:

vetor[0] = "V";
vetor[1] = "&";
vetor[2] = "(";
vetor[3] = "F";
vetor[4] = "->";
vetor[5] = "V";
vetor[6] = ")";

até ai ok, o problema é que a precedencia é dada apenas pelos parenteses, já que todos operadores sao de mesma precedencia
se alguem tiver alguma luz de como ficaria a lógica/algoritmo pra montar a arvore dessa expressao, que ficaria assim:

      &
     / \
   V   ->
       / \
      F   V

agradeço desde já

ps. é arvore binaria simples, a unica precedencia sao os parenteses

Esse é um algoritmo bastante clássico.

Uma dica, você precisa usar uma pilha.

Se você está morrendo de curiosidade, pode dar uma olhada no algoritmo “Shunting Yard”, do bom e vejo Dijkstra:

valeu vini, no dia que postei quando fui pra facul já consegui resolver a lógica
na real eu usei duas pilhas mesmo e quando dava uma sub-arvore, eu empilhava o operador como operando pois ele iria ser nó filho
acabou por ficar um algoritmo bem grandinho pelos tratamentos e outra funcionalidades do problema… mas deu tudo certo
valeu a força