劍指Offer 樹的子結構

2021-09-25 11:36:43 字數 608 閱讀 4258

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

//樹結點定義

struct treenode

};//判斷子樹

bool ischildtree(treenode* a, treenode* b)

return false;

}//判斷子結構

bool hassubtree(treenode* proot1, treenode* proot2)

分析:樹的子結構:子樹的所有結點都出現在主樹上;

遞迴解決:二叉樹結構固定,都是根和左右結點,使用遞迴的方法遍歷每乙個結點,遍歷的順序為:根、左、右

判斷以樹a以當前結點為根節點時,樹b是否為樹a的子樹;

遞迴遍歷樹a的左子樹;

遞迴遍歷樹a的右子樹;

一旦判斷子樹時返回的結果為true,即b是a的子結構,結束程式;否則,遍歷到a的最後乙個結點,返回flase;

劍指offer 樹的子結構

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 9 30 題目描述 輸入兩顆二叉樹a,b,判斷b是不是a的子結構。解析 解決樹類問題的時候遞迴是乙個很好的解決方案,並且寫的程式簡單,理解起來也很容易。遞迴的時候謝了乙個函式來判斷當前兩個根節點對應的子樹是否相等 issubtree 不想...

劍指offer 樹的子結構

題目描述 輸入兩顆二叉樹a,b,判斷b是不是a的子結構。這實際上二叉樹遍歷演算法的一種應用,要在原二叉樹中查詢是否具有某課子樹,只需要判斷每個節點是否都在二叉樹中是否出現即可。所以需要先判斷頭結點,只有頭結點符合要求才繼續比較其子樹是否符合,一樣依次從頭結點開始比較直到其左右子樹進行比較,如果都符合...

劍指offer 樹的子結構

大體思路如下 在程式遞迴過程中,記得注意遞迴的出口以及空指標的處理 主程式中在root1 root2非空的條件下才能去判斷 判斷judge函式中,一些邊界出口為 if root2 null return true if root1 null return false public class sol...