輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)分成兩步,第一步先從樹1中找到樹2的根節點,找到後就開始判斷子樹是否相同,否則從樹1繼續向下找,顯然可以使用遞迴實現。第二步是找到根節點後判斷樹是否相同,也可以使用遞迴,遞迴的出口是到樹2的葉子節點,即上面的節點都已經相同。
題目考察的點是演算法的健壯性,需要考慮只有乙個節點或者都是空等情況
public boolean hassubtree(treenode root1, treenode root2)
private boolean doestree1hastree2(treenode root1, treenode root2)
演算法題目 樹的子結構
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 分析 分為兩步 1 檢查a中是否有與b的根節點相同的結點r 2 以r為根節點的子樹是否包含和數b一樣的結構。解答 public class treenode public class solution if re...
16 樹的子結構 這題多複習
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 這題分兩步 第1 在樹a中找到和樹b的根節點的值一樣的節點r,注意樹的節點值可以有多個相同的值。第2 判斷樹a中以r為根節點的子樹是不是包含和b一樣的樹結構。這題難在遞迴基和判斷樹節點為空該返回什麼,一定要記清楚...
演算法學習 樹的子結構
問題描述 判斷樹a是否是樹b的子結構。解法與分析 使用遞迴的方式很容易解決。先進行根結點比較,相等的話,遞迴左右子樹。public static boolean isincludetree treenode parent,treenode child if parent.value child.va...