題目描述
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
* 基本思路:1.判斷樹a和樹b是否有相同的根結點 2.如果存在,判斷a的子樹是否和b樹結構相同 3.如果不存在,a樹向下遍歷,重複步驟1,2
* 注意null的條件,hassubtree中,如果兩棵樹都不為空才進行判斷,
* doestree1hastree2中,如果b樹為空,則說明b樹遍歷完了,即匹配成功,
* a樹為空有兩種情況(1)如果a樹為空&&b樹不為空說明不匹配,
* (2)如果a樹為空,b樹為空,說明匹配。
* @param
root1 a樹
* @param
root2 b樹
* @return
*/public
boolean
hassubtree(binarytreenode root1, binarytreenode root2)
//未匹配成功,a樹向左子樹遞迴查詢與b樹根節點相等的根結點
if (!result)
//未匹配成功,a樹向右子樹遞迴查詢與b樹根節點相等的根結點
if (!result)
}return
result;
}private
boolean
doestree1hastree2(binarytreenode root1, binarytreenode root2)
//結點值不相同,肯定不是子樹
if (root1.value !=root2.value)
return
doestree1hastree2(root1.left, root2.left)
&&doestree1hastree2(root1.right, root2.right);
}
劍指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...