バイナリ表現木 - 百科事典
バイナリ表現木は、表現を表すために使用される特定の種類のバイナリ木です。バイナリ表現木が表す一般的な表現の種類には、代数的および論理的表現があります。これらの木は、一項および二項演算子を含む表現を表すことができます。
どのバイナリ木と同様に、バイナリ表現木の各ノードは、0、1、または2つの子供を持っています。この制限された構造は、表現木の処理を単純化します。
表現木の構築
= 例 =
ポストフィクス記法の入力は以下の通りです:a b + c d e + * *
最初の2つのシンボルは操作数であるため、1ノードの木が作成され、それらへのポインタがスタックにプッシュされます。便利のために、スタックは左から右に成長します。
次のシンボルは'+'です。2つの木のポインタをポップし、新しい木が形成され、それへのポインタがスタックにプッシュされます。
次に、c、d、およびeを読み取ります。それぞれに対して1ノードの木が作成され、対応する木へのポインタがスタックにプッシュされます。
続いて、'+'が読み取られ、最後の2つの木が統合されます。
次に'*'が読み取られ、最後の2つの木のポインタがポップされ、'*'をルートに持つ新しい木が形成されます。
最後に、最後のシンボルが読み取られ、2つの木が統合され、最終的な木へのポインタがスタックに残ります。
代数的表現
代数的表現木は、数値、変数、一項および二項演算子を含む表現を表します。一般的な演算子には、×(乗法)、÷(除法)、+(加法)、−(減法)、^(指数)、および−(否定)があります。演算子は木の内部ノードに含まれ、数値および変数は葉ノードに含まれます。二項演算子のノードには2つの子供ノードがあり、一項演算子のノードには1つの子供ノードがあります。
論理的表現
論理的表現は、代数的表現と非常に似ていますが、使用される特定の値および演算子が異なります。論理的表現は、trueおよびfalseを定数値として使用し、演算子には以下のものがあります。
∧
(AND),
∨
(OR),
¬
(NOT)。
参考文献
Expression (mathematics)
Term (logic)
Context-free grammar
Parse tree
Abstract syntax tree