7

Java の割り当ての一部として、入力算術式を取得してバイナリ ツリーに格納する必要があります。

式の文字列を読み取って二分木に格納する部分を除いて、割り当てに必要なすべてのことを行いました。

BinaryTree というクラスを作成しました。その唯一のフィールドは、ルートと呼ばれるツリーノードです。このツリーノードは、BinaryTree の内部クラスとして定義されています。3 つのフィールド、汎用データ フィールド、および BinaryTree 型の 2 つの子 (左と右) があります。

次のような式を読み取るためのアルゴリズムを定義するのに非常に苦労しています

(5*(2+3)^3)/2

このようなツリーに保存します

             /
        ^          2
    *       3
  5   +
     2  3

誰でもアルゴリズムを手伝ってもらえますか?

4

2 に答える 2

6

待避所アルゴリズムを見てみましょう。ウィキペディアから:

コンピューター サイエンスでは、shunting-yard アルゴリズムは、中置表記で指定された数式を解析する方法です。逆ポーランド記法 (RPN) または抽象構文木 (AST) として出力を生成するために使用できます。このアルゴリズムは Edsger Dijkstra によって発明され、その操作が鉄道の操車場の操作に似ていることから、「操車場」アルゴリズムと名付けられました。Dijkstra は、Mathematisch Centrum レポート MR 34/61 で、Shunting Yard Algorithm を最初に説明しました。

于 2012-04-24T18:07:07.620 に答える
3

次に示すのは、2 つのスタック (1 つは演算子用、もう 1 つはオペランド用) を使用するバイナリ式ツリーを作成する C++ コードです。最終的に、オペランド スタックには 1 つの要素 (完全なバイナリ式ツリー) が含まれます。

于 2012-12-18T00:41:12.253 に答える