良い一日、 有限状態マシンでバイナリツリーを走査することは可能ですか?
ちょうど明確にするために:私は、再帰的または反復的な解決策を捜しているわけではないが、ウィキペディアは、任意の木の、前インおよびポストオーダートラバースを実装するのに十分な擬似コードを持っています。私は、バイナリツリーを走査する有限状態機械の構築に興味があります。
ツリーはノードで構成されています。ノードには、LeftChild、RightChild、およびParentプロパティがあります。
FSMは、任意の時点でノードで停止し、必要な数の状態を持つことができますが、これはチューニングマシンと区別される任意の種類の動的スタックではありません。入力 "GiveNext"では、マシンは次のノードで停止する必要があります(たとえば、ツリーの先行予約をトラバースするなど)。
私はかなり長い間試してきましたが、確かに。問題は、最近の決定を追跡する必要があるため、親を介してノードを再訪する際に、左が処理されたときに右に回ることができるようにすることです。
思考?
ありがとうございます! ハーブ
Morris Inorder Traversalを見ましたか? https://en.wikipedia.org/wiki/Tree_traversal#Morris_in-order_traversal_using_threading – msandiford
ありがとう、@msandiford。スレッド化されたバイナリツリー([link](https://en.wikipedia.org/wiki/Threaded_binary_tree))は、ツリーに順番にアクセスするときにはうまくいくでしょう。残念なことに、ツリーレイアウトの変更は問題になりません。ツリーはプレフィックスツリー(別名:Patricia trie)であるため、アクセスする最も感覚的な方法はプレオーダーです。単なる好奇心の中で(私はツリーレイアウトを変更できないため):プリオーダートラバーサル用のスレッドバイナリツリーはありませんか? – Herb