基本的なアルゴリズム--- DFS(深さ優先探索)

個人的な理解

DFS(深さ優先探索)と同様のBFS、だけでなく、簡単なグラフ探索アルゴリズムは、その主なアイデアは、次のとおりです。最も深い位置まで各支店へのアクセスは、これまでのところまで継続することはできません。

ダイヤグラム

 

今、私たちは、ノードG(必ずしも最適ではない)、DFS次の手順にノードAからのパスを見つけたいです。

図1は、それがノードEに到達するまで、ルートノードAは、選択パスのノードB、及び背面から出発して、任意のさらなる行くことができません

2、次にバックAに、経路選択のノードC、ノードEを選択し、Eが訪問することが見出され、ノードCにバックされています

3それはノードGに到達するまで、パスは、ノードF、及び背面を選択

4ので、そのノード・パスのノードGにA:A-> C-> F-> G

擬似コード:

ブールDFS(ノードルートノードターゲット){

  <ノード> vistised設定します。

  スタック<ノード>スタック。

  vistisedにルートノードを追加します。

  スタックにルートノードを追加します。

  一方、{(スタックが空ではありません)

    スタックのノードCUR =トップノード。

    (CUR ==ターゲット)がtrueを返す場合は、

    (:CURの子ノードのノード次){用

      {(次visistedされていない)場合

        次vistisedに追加します。

        スタックの隣に追加します。

      }

    }

    スタックからCURを削除します。

  }

  falseを返します。

例に対応する滞在ボタン

https://leetcode-cn.com/problems/binary-tree-inorder-traversal/

https://leetcode-cn.com/problems/decode-string/

https://leetcode-cn.com/problems/keys-and-rooms/

おすすめ

転載: www.cnblogs.com/sniffs/p/12049054.html