劍指offer 樹的子結構

2021-09-20 21:11:31 字數 695 閱讀 6222

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

演算法分析:

題目的意思就是判斷乙個樹,是不是另乙個樹的子結構

1.在a中去找和b樹根節點的值相同的節點,找不到,那麼b樹不是a樹的子樹,找到了進入2

2.根據在a中找到的根節點,分別去判斷它的左右子樹是否和b樹的左右子樹相同,

1)當在a中找到了 和b根節點一樣的節點,則繼續判斷a的左右子樹和b的左右子樹的節點是否一樣,如果一樣,則b樹是a的子樹

2)如果不一樣,則繼續在a中尋找是否還有和b樹根節點一樣的數字,如果有繼續判斷他的左右子樹是否和b樹的左右子樹一樣,一樣則是子樹,不一樣重複步驟2)

即判斷乙個樹是不是另乙個樹的子樹需要判斷兩方面的內容:樹的結構和節點對應的值是否相等(缺一不可)

如果節點裡面的值相同但是結構不一樣,那就不是他的子樹b是a的子樹

/**

public class treenode }*/

public class solution

if(!flag)

}return flag;

}public static boolean issubtree(treenode root1,treenode root2)else

}}

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