ホームページ  >  記事  >  Java  >  Java で算術式を解析し、ツリー表現を構築するにはどうすればよいですか?

Java で算術式を解析し、ツリー表現を構築するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-25 05:36:02823ブラウズ

How to Parse an Arithmetic Expression and Construct a Tree Representation in Java?

Java で算術式を解析し、そこからツリーを構築する

この記事では、算術式の解析の複雑さについて詳しく説明します。

はじめに

まず、入力式が文字列として提供され、準拠していると仮定します。次のルールを使用します:

  • 負の数値は括弧で囲む必要があります。
  • 括弧は一貫してバランスを保つ必要があります。

ツリーの構築

算術式からツリーを構築することの中核には、スタックの利用が含まれます。式を 1 文字ずつ解析するときに、演算子と数値をスタックにプッシュします。演算子には優先順位が関連付けられているため、部分式を見つけたときに評価して組み合わせることができます。

アプローチ

  1. スタックの初期化: 空のスタックから開始します。
  2. 式の解析: 式文字列内の各文字にアクセスします。
  3. 括弧の処理: 括弧の場合
  4. ハンドル演算子: 演算子が見つかったら、その優先順位を現在の "最も高い優先順位" と比較します。スタック。 current が新しい演算子の優先順位よりも低い場合は、新しい演算子をスタックにプッシュします。それ以外の場合は、新しい演算子の優先順位が高くなるか同等になるまで、スタック上の演算子を評価します。
  5. 数値の処理: 数値をスタックに直接プッシュします。
  6. スタックの評価: すべての文字が処理されたら、スタック上の残りの演算子を上から下に評価します。

式:

(5+2)*7

次のように解析します:

Character Action Stack
( Push ( (
5 Push 5 (, 5
Push (, 5,
2 Push 2 (, 5, , 2
) Evaluate to 7, push 7 (, 7
* Push * (, 7, *
7 Push 7 7, *, 7

結果のツリーは次のようになります。

(5+2)*7

結論

算術式を解析してツリーを構築することは、コンピューター サイエンスの基本的な操作です。この記事では、スタックを使用した段階的なアプローチを提供し、優先順位ルールと括弧内のバランスの重要性を強調しました。このアルゴリズムを Java で実装すると、算術式を効果的に処理および操作できる強力なアプリケーションを作成できます。

以上がJava で算術式を解析し、ツリー表現を構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。