チェックとO 2つのツリーのノードが関連しているかどうかを確認し(祖先/子孫)(1)2つのツリーのノードが関連している場合(すなわち、祖先 - 子孫)前処理
- (1)Oでそれを解決します時間とO(N)スペース(ノードN =#)
- 前処理は、それをだ
が許可されています。私は下の私の解決策(アプローチ)に行くつもりです。あなた自身を最初に考えたければ、やめてください。私は予約注文を行うことを決めた前処理のために
(再帰的に子供、その後、最初のルートを通過)し、各ノードにラベルを与えます。
ラベルを詳細に説明します。各ラベルは、 "1,2,1,4,5"のようなコンマで区切られた自然数で構成されます。このシーケンスの長さは(ノードの深さ+1)に等しくなります。例えば。ルートのラベルは "1"、ルートの子はラベル "1,1"、 "1,2"、 "1,3"などを持ちます。次レベルのノードは "1,1,1" ... "1,2,1"、 "1,2,2" ...
ノードの "注文番号"は、親の子リスト内の「このノードの1から始まるインデックス」。
共通ルール:ノードのラベルはノードの親ラベルとコンマで構成され、ノードの「注文番号」で構成されます。
O(1)に2つのノードが関連している場合、そのノードのラベルがもう一方のラベルの「接頭辞」であるかどうかを確認します。そのようなラベルがO(N)スペースを占有すると考えられるかどうかはわかりませんが。
修正を含む批評家または代替のアプローチが必要です。
最悪のシナリオではすべてのノードに1つの子供(麺)があります。 – WeaselFox