輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
分析
b是a的子結構分為幾種情況:
1、b是空或者a是空,直接false;
2、b的根節點與a的根節點相等,而且左右子樹都相同;
3、b的根節點和a不等,但是a的左子樹或者右子樹和b相同;
所以可以先設定遞迴函式為判斷是否相同:issametree(treenode* proot1, treenode* proot2)。
**實現
bool hassubtree(treenode* proot1, treenode* proot2)
bool issametree(treenode* proot1, treenode* proot2)
劍指offer 樹的子結構17
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 class solution defissubtree self,proot1,proot2 如果樹a空了,樹b沒空則匹配失敗 if proot1 none and proot2 is notnone retur...
劍指offer 17 樹的子結構
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 這是典型二叉樹遞迴問題。倆顆樹都不為空時,如果根節點相同,那麼判斷root2是不是root1的子樹,如果不是,那麼判斷root2是不是root1左子樹的子樹,如果還不是,那麼判斷root2是不是root1右子樹的...
劍指Offer (17)樹的子結構
題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 實現如下 分兩步 第一步 尋找與b樹根節點val相等的a樹節點。如果找到進入第二步,否則繼續尋找,直到找完a樹 第二步 以找的節點作為a樹子樹的根節點,同時遍歷兩棵樹,判斷是否所有節點都相同 特殊情況 ...