題目要求:
輸入兩棵二叉樹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...