劍指offer 解題系列(17) 樹的子結構

2021-08-01 14:01:01 字數 422 閱讀 8297

輸入兩棵二叉樹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樹子樹的根節點,同時遍歷兩棵樹,判斷是否所有節點都相同 特殊情況 ...