劍指offer 樹的子結構

2021-08-24 18:07:13 字數 634 閱讀 3205

樹的子結構

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

思想:

我是用遞迴的方法來完成樹的子結構的匹配的。如果這棵樹,因為題目裡規定空樹是不匹配的,那麼我的遞迴出口自然就不能是該節點為空,匹配成功。因為 節點為空,是匹配失敗的退出條件啊。那麼我們可以設定該節點值相同,且該節點既沒有左子樹,又沒有右子樹。那麼不就匹配成功了嗎!那如果該節點匹配成功了,但是有左右孩子,那就同時遞迴兩棵樹的左右子數,繼續匹配啊。如果該值不同,那可不能說明就匹配失敗了。要繼續走被匹配樹的左右孩子。直到被匹配樹的節點走到空了,就失敗了。

/*

struct treenode

};*/

class solution

if(proot2->right != null)

if(left == true && right == true)

return true;

}return hassubtree(proot1->left,proot2) ||

hassubtree(proot1->right,proot2);}}

};

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