二つのバイナリ入力A、Bは、BはAさんを下部ではないと判断されます。(詩:私たちは、空のツリーは任意のサブ構造ツリーではありません同意しました)
1 / * 2 構造体のTreeNode { 3 int型のval; 4 構造体のTreeNode *左; 5 右側の構造体のTreeNode *; 6 ツリーノード(int型X): 7 左のval(X)、(NULL)、右(NULL){ 8 } 9 }。* / 10 クラスソリューション{ 11 公共: 12 ブール HasSubtree(ツリーノード* pRoot1、ツリーノード* pRoot2) 13 { 14 であれば(pRoot1 ||!pRoot2) 15 リターン 偽。 16 BOOLANS = 偽; 17 であれば(pRoot1->ヴァル== pRoot2->ヴァル)ANS = is_subTree(pRoot1、pRoot2)。 18 もし(!ANS)ANS = HasSubtree(pRoot1-> 左、pRoot2)。 19 もし(!ANS)ANS = HasSubtree(pRoot1-> 右、pRoot2)。 20の リターンANS; 21 } 22 ブール is_subTree(ツリーノード* pRoot1、ツリーノード* pRoot2){ 23 場合(pRoot2!)を返す 真。 24 もし(!pRoot1)が返す 偽。 25の ブール ANS = 真。 26 もし(!pRoot1->ヴァル= pRoot2-> val)でANS = 偽; 27 であれば(ANS)ANS = is_subTree(pRoot1->左、pRoot2-> 左)。 28 であれば(ANS)ANS = is_subTree(pRoot1->右、pRoot2-> 右)。 29の リターンANS; 30 } 31 }。