題目:輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
思路:比較a和b的根節點是否相同,若相同比較它們的左右子樹是否相同,直到比較完b的所有葉子節點,若都相同,返回true;若a的跟節點和b的根節點不同,則a向左右子樹滑動繼續和b比較。
步驟:如果a和b根節點相同,左右節點相同,則a,b都移到它們的左右子節點繼續比較;
如果a和b根節點相同,左右節點不同,移動a到它的左右子節點繼續和b的根節點開始比較
如果a和b根節點不同,a移到它的左右節點再和b的跟節點比較
**:
/**
public class treenode }*/
public class solution
if(root1 == null)
if(root1.val == root2.val)
//左右節點相同的三種情況
if((root1.left != null && root1.right != null) && (root2.left != null && root2.right != null) && (root1.left.val == root2.left.val && root1.right.val == root2.right.val))
else if((root1.left != null && root1.right == null) && (root2.left != null && root2.right == null)&&(root1.left.val == root2.left.val))
else if((root1.left == null && root1.right != null) && (root2.left == null && root2.right != null)&&(root1.right.val == root2.right.val))else
else if(root1.left != null && root1.right == null)
else if(root1.left == null && root1.right != null)
else
}
}else if(root1.left!=null&&root1.right==null)else if(root1.left==null&&root1.right!=null)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...