タイトル:1367バイナリツリーのリスト。
リンク:https://leetcode-cn.com/problems/linked-list-in-binary-tree/
質問の意味:やや
アイデア:2つのアイデアが長すぎるためには、算術問題を行っていません。この種の問題に敏感ではない、それは実際、DFSまたはBFSでは、付与されたDPの練習のために取られたと思いました。
DFSの練習は:非常に最初からだと思います。デジタルバイナリツリーのルートの最初のリストと等しいかどうかを比較します。
それらが等しい場合には、バイナリデジタルコンパレータは、それぞれ左右の下位ノードのリストと。
等しくない場合は、最初の数は、場所に再帰的で始まり、最初のリスト内の番号(注なければならないこと
それが発見された場合に等しく、そして継続するために、我々は最初の番号から開始しなければならないではありません。第一されていない場合、電流は等しくないので、その前の同等の切断を意味します。)、それぞれ、バイナリツリーは左と右のノードを比較し続けます。
再帰を説明しました。時間の複雑さ:バイナリノードリストの長さの数は* 100 * 2500 =
#define P対<ListNode *、ツリーノード*> クラスソリューション { パブリック: BOOL ISSET。 ListNode * FirstHead。 公共: BOOL isSubPath(ListNode *ヘッド、ツリーノード* ルート) { 場合(!ISSET){ ISSET = 真; FirstHead = ヘッド。 } 場合(ヘッド== NULL)は{ 返す真。 } であれば(ルート== NULL){ リターン 偽; } BOOL RES = 偽。 もし(頭部>ヴァル== root-> ヴァル){ RES = isSubPath(頭部>次に、root->右)|| isSubPath(頭部>次に、root-> 左)。 もし(RES){ 戻りRES。 } } もし(FirstHead == ヘッド){ RES | = isSubPath(ヘッド、root->左)|| isSubPath(ヘッド、root-> 右)。 } 戻りRES。 } }。
練習BFS:
バイナリツリーの列挙し、リストの各ノードは、最初の試合で始まります。
最初の一致からバイナリツリーリスト及び開始の各所与のノードのために。
BFSで練習に連続した同じパスを探しています。