/**
* 樹的子結構
*
* @param a
* @param b
* @return
*/
public boolean hasSubtree(TreeNode a, TreeNode b) {
boolean res = false;
if (a != null && b != null) {
if (Objects.equals(a.val, b.val)) {
res = doesTree1HaveTree2(a, b);
}
if (!res) {
//看左子樹是否與之相等
res = hasSubtree(a.left, b);
}
if (!res) {
//看右子樹是否與之相等
res = hasSubtree(a.right, b);
}
}
return res;
}
/**
* 判斷兩顆樹是否相等
*
* @param a
* @param b
* @return
*/
public boolean doesTree1HaveTree2(TreeNode a, TreeNode b) {
if (null == b) return true;
if (null == a) return false;
if (Objects.equals(a.val, b.val)) return false;
return doesTree1HaveTree2(a.left, b.left) && doesTree1HaveTree2(a.right, b.right);
}
劍指Offer學習-面試題26:樹的子結構
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.