como posso inserir os dados (A+B) * (C+D) em uma arvore binaria sendo que os operandos sempre devem aparecer como folhas e os operadores nunca? é essa a regra né em notacao polonesa?
Notacao polonesa
6 Respostas
Não entendi patavina.
A notação polonesa inversa seria:
a b + c d + *
E a notação polonesa direta seria:
-
- a b + c d
preciso de um algoritmo para gerar uma árvore binária a partir de uma expressão aritmética em notação infixa
Ex: A + B * C
ficaria
+
A *
B C
Bom, você pode criar uma pilha e sabe qual é a precedência de operadores (* tem precedência sobre +). Você também precisa tratar os parênteses, não?
Sim eu sei que da com uma pilha mas eu precisava mesmo que fosse com uma arvore binaria
a procedencia dos operadores é o que tiver fora do parentese
A entrada do seu programa é uma expressão no formato infix:
[(a+b) * (c+d)]
Antes de montar a árvore, você precisa colocar a expressão no formato prefix (notação polonesa).
-
- a b + c d
A partir daí você monta a árvore.
*
+ +
a b c d
Obviamente, seu programa deve conhecer a gramática utilizada para diferenciar os símbolos dos operadores dos operandos.
Você precisa da pilha para poder montar a árvore. Eu não disse para usar a pilha para poder avaliar a expressão.