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