劍指Offer (17)樹的子結構

2021-07-31 18:04:47 字數 770 閱讀 2478

題目描述:

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

實現如下:

//分兩步

//第一步:尋找與b樹根節點val相等的a樹節點。如果找到進入第二步,否則繼續尋找,直到找完a樹

//第二步:以找的節點作為a樹子樹的根節點,同時遍歷兩棵樹,判斷是否所有節點都相同

//特殊情況:

//1.進行第二步時注意有可能存在b樹大小等於a的子樹、b樹大小小於a的子樹、b樹大小大於a的子樹

//2.注意對無效值的防禦

//3.減少遞迴此數,及時判斷return

/*struct treenode

};*/

class solution

//第一步

bool hassubtree(treenode* proot1, treenode* proot2)

//否則繼續第一步

flag = hassubtree(p1->left, proot2);//對左子樹進行第一步

if (flag) return flag;

flag = hassubtree(p1->right, proot2);//對右子樹進行第一步

if (flag) return flag;

return flag;

}};

劍指offer 17 樹的子結構

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 這是典型二叉樹遞迴問題。倆顆樹都不為空時,如果根節點相同,那麼判斷root2是不是root1的子樹,如果不是,那麼判斷root2是不是root1左子樹的子樹,如果還不是,那麼判斷root2是不是root1右子樹的...

劍指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的根結點值...