劍指offer 17 樹的子結構

2021-07-31 03:50:11 字數 987 閱讀 2841

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

這是典型二叉樹遞迴問題。倆顆樹都不為空時,如果根節點相同,那麼判斷root2是不是root1的子樹,

如果不是,那麼判斷root2是不是root1左子樹的子樹,如果還不是,那麼判斷root2是不是root1右子樹的子樹,如果還不是,返回root2不是root1的子樹。

#include

using

namespace std;

struct treenode };

class

solutionif(

!proot2)

return

this

->

dfs(proot1,proot2)

||this

->

dfs(proot1-

>left,proot2)

||this

->

dfs(proot1-

>right,proot2);}

bool

dfs(treenode* proot1, treenode* proot2)

if(proot1 ==

null)if

(proot1-

>val != proot2-

>val)

return

this

->

dfs(proot1-

>left,proot2-

>left)

&&this

->

dfs(proot1-

>right,proot2-

>right);}

};treenode*

create_binarytree()

else

return t;

}int

main()

return0;

}

劍指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...

劍指offer17 樹的子結構

最近全國疫情嚴重,待在家裡沒事幹,馬上又要準備春招了,最近刷刷題,記錄一下!再說一句,武漢加油,大家出門記得戴口罩!輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 要查詢樹a中是否存在和樹b結構一樣的子樹,我們可以分為兩步 第一步,在樹a中找到和樹b的根結點值...