深度優先と幅優先優先の両方の順序で任意のツリーに対するツリートラバーサルアルゴリズムが必要です。トリッキーな部分は、任意のノードから開始し、別の特定のノードが通過するまで続ける必要があるということです。C#の任意のノードから始まる一般的なツリー構造をトラバースする
私は開始ノードに到達して終了ノード(私が現在行っている)まで続けるまで、通常のアルゴリズムを使用して、通過ノードを無視できますが、これは醜く非効率的です。
ご提案ください。
更新:各ノードには、関連付けられたIDがあります。場合によっては、開始ノードと終了ノードの参照があります。他のケースでは、私は2つのIDを与えられている、私は指定されたノードが開始ノードかエンドノードかどうか、そのIDを調べることによってチェックする。私は深さ優先の探索を使って開始ノードを見つける。開始ノードと終了ノードの両方は、階層内のどこにでも配置できます。開始ノードと終了ノードの両方への参照がすでに与えられている場合のアイデアを思いつくことができれば幸いです。ところで、ツリー内のノードは、実際には、ノードのサブノードのそれぞれについて0から開始し、1つのルートノード
ツリー内の開始ノードをトラバースせずにどのように見つけることができますか? – BrokenGlass
あなたはすでにノードを持っていますか?それ以外の場合は、開始ノードと終了ノードの検索を高速化するために2番目のデータ構造が必要です。 – harold
ツリーの構造を指定してください。ソート順は実装されていますか?ノードはどのように関係していますか? –