劍指offer 17 樹的子結構 C

2021-10-09 14:22:24 字數 515 閱讀 8573

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

題目抽象:給2棵樹a,樹b,判斷b是否是a的子結構。

子結構定義:樹a和樹b的根結點相等,並且樹a的左子樹和樹b的左子樹相等,樹a的右子樹和樹b的右子樹相等

第一步:

根據題意可知,需要乙個函式判斷樹a和樹b是否有相同的結構。顯然是個遞迴程式。可考察遞迴程式3部曲。

遞迴函式的功能:判斷2個數是否有相同的結構,如果相同,返回true,否則返回false

遞迴終止條件:

第二步:

有了上面那個函式,接下來就應該讓樹a的每個節點作為根節點來和b樹進行比較。

遍歷樹a的每個節點,可用遍歷演算法。這裡採用先序遍歷。

因此,結合兩個函式。可得到整個函式的**

class solution 

bool hassubtree(treenode* proot1, treenode* proot2)

};

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

劍指offer(17)樹的子結構

19.1.11 題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 思修很簡單 遍歷a樹,每個a節點與b對比,對比函式為solution。如下 function treenode x function hassubtree proot1,proot2 r...