3

件名が述べているように、再帰を使用せずに二項算術式ツリーを評価する方法を説明する必要があります。その他の詳細や指示はありません。

そのようなことを理解する限り、ツリーの順序どおりのトラバーサルをシミュレートする必要があります。hasLeft()教科書に概説されている ADT メソッドが利用できると仮定すると、、、、、、、hasRight()およびメソッドleft()があります。独自のメソッドを作成できるかどうか教授に尋ねる必要がありますが、使用するメソッドがないため、ツリーをたどることができます。とはいえ、私には方法があります。right()isInternal()isExternal()parent()root()

これを行う方法を理解するために、誰かが私を正しい方向に向けることができますか? すぐにツリーに戻る方法がないため、再帰なしでこれを行う方法は考えられません。

4

1 に答える 1

7

すでにアクセスしたノードのスタックを保持できます。次に、新しいノードをスタックにプッシュして再帰呼び出しを置き換え、再帰関数が返されるスタックからノードをポップします。

再帰関数を実行するときは、各関数呼び出しで渡されたパラメーターを記憶する暗黙のスタックが常に存在することに注意してください。

于 2013-02-23T18:04:29.907 に答える