Pythonでポーランド記法で++243のように書かれたものを二分木の木構造にするプログラムを作りたいのですが、それを行うためのライブラリはありますか?それとも自分で作る必要がありますか?
漠然とした質問ですみませんが、よろしくお願いします。

回答2件
あなたの回答
tips
プレビュー
アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。
データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)
Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。
アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。
データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)
Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。
1グッド
1クリップ
投稿2020/05/24 13:16
Pythonでポーランド記法で++243のように書かれたものを二分木の木構造にするプログラムを作りたいのですが、それを行うためのライブラリはありますか?それとも自分で作る必要がありますか?
漠然とした質問ですみませんが、よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
自分でやってもしれてます。
Python
1from collections import deque 2 3deque = deque('++243') 4 5def isBinaryOperator(token): 6 if token == '+': 7 return True 8 else: 9 return False 10 11def convert(): 12 token = deque.popleft() 13 if isBinaryOperator(token): 14 return (token, convert(), convert()) 15 else: 16 return (token) 17 18print(convert()) 19
上記コードの convert 関数は要素数三つのタプルを返します。最初の要素が親、次の要素が左の子、最後の要素が右の子です。
実行結果は次のようになります。
('+', ('+', '2', '4'), '3')
ルートが '+' で、その左の子が ('+', '2', '4') 右の子が '3' です。
('+', '2', '4') は親が '+' で左の子が '2' 右の子が '4' です。
これをタプルでなくノードクラスを作れば木構造のできあがりです。
投稿2020/05/24 14:19
総合スコア28675
0
https://smdn.jp/programming/tips/polish/impl_python/
は、中間記法から内部的に二分木を生成し、逆ポーランド記法で表示し、計算するプログラムですので、参考になると思います。
二分木化の基本的な考え方は
https://smdn.jp/programming/tips/polish/
に図解で記載されています。
投稿2020/05/24 13:21
編集2020/05/24 13:39総合スコア898
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/24 23:21
2020/05/24 23:24
2020/05/25 01:04
2020/05/25 01:20
2020/05/25 01:45
2020/05/25 03:09
2020/05/25 03:12
2020/05/25 03:41 編集
2020/05/25 03:51
2020/05/25 03:53
2020/05/25 05:44