思路:
正確理解題意:子結構到底是啥意思?很容易弄混淆的是子樹和子結構,下圖黃色黃是子樹,黑色框是子結構但不是子樹
一棵大樹 a,一棵小樹 b,若 b 是 a 的子樹,則:
b 和 a 的乙個子節點c的結點值完全相同,它們倆的左子樹、右子樹所有結點的值也完全相同,子結構要求則沒那麼嚴格
1先寫乙個方法,傳入兩棵根節點值相同的樹,判斷tree2是否和tree1的子結構。
2再寫乙個方法來遍歷大樹tree1,找到乙個和小樹根節點值相等的節點,以該節點和小樹根節點的值為引數呼叫上面的方法即可
/**
public class treenode }*/
public
class
solution
if( tree1 == null )
if( tree1.val != tree2.val )
return
doestree1hastree2
(tree1.left, tree2.left)
&&doestree1hastree2
(tree1.right, tree2.right);}
public
boolean
hassubtree
(treenode root1, treenode root2)
return
doestree1hastree2
(root1, root2)
||hassubtree
(root1.left, root2)
||hassubtree
(root1.right, root2);}
}
演算法刷題 樹的子結構
問題 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 思路 1 判斷b是不是空樹,如果是空樹,返回false 2 判斷a是不是空樹,如果是空樹,返回false 3 如果找到了對應b的根節點的點,即在這時候ab相同了,以這個根節點為為起點判斷是否包含b 4 判斷...
樹的子結構(第17題)
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 ac 100 思路 先序遍歷尋找a中和b根節點相等的節點,記做起點,然後從這個起點開始和b樹進行對比。public class a17樹的子結構 b root2 dlr root1 return flag 先序遍...
第17題「樹的子結構」
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 時間限制 1秒 空間限制 32768k 熱度指數 342783 第一步 先找到a樹中與b樹根節點相等的節點 第二步 當找到這個節點後,比較他們兩的子樹 第四步 再繼續比較下去。找遞迴出口 public class...