牛客 樹的子結構

2021-10-02 11:42:00 字數 902 閱讀 2573

題目要求:

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)

解決此題需要分為兩步:

1.在a樹中找到與b樹的根節點的值相等的結點r。

2.再判斷b樹是否與a樹中以r為根的子樹具有相同的結構。

第一步:

1.遞迴遍歷樹a,在樹a中找與b樹的根節點的值相等的結點r。

2.若找到進行第二步操作。

3.若沒找到,則返回false。

**實現如下:

bool

hassubtree

(treenode* proot1, treenode* proot2)

return res;

}

第二步:1.遞迴進行判斷b樹是否與以r為根節點的子樹具有相同的結構。

2.如果r為空,b不為空說明,r已經結束,b還有結點沒匹配。說明不匹配

3.如果b為空,則說明b已經全部匹配。

4.兩者值不相等,不匹配。

5.遞迴判斷整個樹。

**如下:

bool

issubtree

(treenode* r, treenode* proot2)

可以根據下圖來驗證:

注意:一定要檢查空指標,若沒有作相應的出出力,程式很容易崩潰。

總**見:樹的子結構

牛客網12 樹的子結構

題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 coding utf 8 class treenode def init self,x self.val x self.left none self.right none 下面兩個函式,hassubtr...

牛客網刷題 樹的子結構

題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 解析 可以想見整個過程 1 a,b首先看根節點對不對,如果對了,看根節點的左右結點對不對。2 若第乙個根節點沒有配對成功,則換成a的左子結點來配對。3 若左子結點沒有成功,則換成a的右子結點來配對。st...

劍指offer(牛客網)樹的子結構

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 public class solution 判斷根開頭的 if ispart root1,root2 return hassubtree root1.left,root2 hassubtree root1.rig...