判斷一棵樹是否是另一棵樹的子樹 java實現

2021-07-26 06:30:38 字數 555 閱讀 9571

這是乙個很經典的演算法題,聽起來好像挺難的,但是其實很簡單。我覺得我們接觸到的問題,並沒有難題,只有複雜不複雜。乙個再難的問題,也可以分解成乙個個簡單的問題,再將這些簡單的問題交給不同的人去做就構成了乙個專案。其實寫演算法也是這個思想。

首先要判斷一棵樹是不是另一棵樹的子樹,我們只需遍歷一棵樹,用這個樹的每乙個節點去和另一棵樹比較。那麼這個問題就被

轉化成了,如何遍歷一棵樹和如何判斷2棵樹是否相等。

我選擇用層次遍歷的方式來遍歷這棵樹

public static boolean levelsearch(node root,node child)

return false; }

很明顯上面就是乙個廣度優先遍歷演算法,那麼接下來我們只需要實現issame()方法了,這個也很簡單

public static boolean issame(node node1,node node2)

if(node1!=null&&node2!=null) }

這裡很簡單,將所有不同的情況都列舉出來,一旦出現就返回false,如果在整個遍歷過程中都沒有出現false,最後返回true。

如何判斷一棵樹是不是另一棵樹的子樹

package suanfatest class treenode treenode int value treenode int value,treenode leftchild,treenode rightchild public int getvalue public void setvalu...

另一棵樹的子樹

給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。示例 1 給定的樹 s 3 4 5 1 2 給定的樹 t 4 1 2 返回 true,因為 t 與 s 的乙個子樹擁有相同的...

一棵樹是否為另一棵樹的子結構

輸入兩顆二叉樹a,b,判斷b是不是a的子結構。問題描述 給定兩個二叉樹的根節點,判斷第二樹是否是第乙個樹的子樹,如果是返回1,否則返回0.拿第二個樹的每個節點去和第乙個樹做匹配,如果某個節點匹配成功,就接著往下匹配,否則重新從第二個樹的的根節點開始。注意區別 測試用例 樹1 42 6 1 3 5 7...