私の MIPS アセンブリ クラスでは、未知のサイズの式を解析ツリーに読み込む必要がありました。私は木を扱う必要がなかったので、これが私が値を保存する方法でした:
ユーザーが式 1 + 3 - 4 を入力したとします (各オペランドは 1 から 9 の数字のみです)。
一番左の子ノードが開始点となり、2 つのデータが含まれます
1. The operand
2. Pointer to the next node (operator)
これが私がツリーを構築した方法です。読み込む値がなくなるまで、オペランドから演算子、次のオペランド、次の演算子へとポイントします。
私の次のタスクは、ツリーを再帰的にトラバースし、値を中置/前置/後置記法で出力することでした。
ツリーの構築方法を考えると、中置トラバーサルは問題ありませんでした。
私はプレフィックスにこだわっています。まず、私はそれを完全に理解していません。
プレフィックスで式 (1 + 3 - 4) を出力すると、- + 1 3 4 になりますか? オンラインの例に従うのに問題があります。
また、私のツリーは適切に構築されていると思いますか? つまり、現在のノードから前のノードに移動する方法がないということは、常に左端の子ノードからトラバーサルを開始する必要があるということです。
助けてくれてありがとう。