劍指offer 樹的子結構 C

2021-09-10 03:34:53 字數 660 閱讀 6988

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)

注: 這裡需要判斷是否是子結構,不需要判斷是子樹.

這個和另外乙個題很像,leetcode 572. 另乙個樹的子樹

題目中說了,空樹不是任意乙個樹的子結構,這一點需要注意。

首先,思路是比較簡單的,通過乙個遞迴來實現。

首先,如果有任何一棵樹是空樹,那麼直接返回false;

首先判斷根節點開始是否是子結構,如果是那麼直接返回true;首先判斷根節點開始是否是子結構,如果是那麼直接返回true;

如果根節點開始不是子結構,那麼就判斷左子樹是否是子結構。類推再判斷右子樹。

子函式fun():

用於判斷是否是子結構

歷遍到root2,如果都相等,那麼就找到子結構了。所以用if(!root)來控制。

/*

struct treenode

};*/

class

solution

//子函式fun()用於判斷樹root2是否是root1的

bool

fun(treenode* root1, treenode* root2)

};

劍指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...