輸入兩棵二叉樹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的根結點值...