演算法複習 樹的子結構

2021-08-03 18:41:30 字數 359 閱讀 5795

輸入兩棵二叉樹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...