劍指 Offer 26 樹的子結構

2021-10-08 21:32:19 字數 1042 閱讀 9730

題目描述:

輸入兩棵二叉樹a和b,判斷b是不是a的子結構。(約定空樹不是任意乙個樹的子結構),b是a的子結構, 即 a中有出現和b相同的結構和節點值。

示例1:

輸入:a = [1,2,3], b = [3,1]

輸出:false

示例2:

輸入:a = [3,4,5,1,2], b = [4,1]

輸出:true

解題思路:

要判斷二叉樹a中是否存在和二叉樹b結構一樣的子樹,可以分為兩步:(1)在二叉樹a中找到和樹b的根節點的值一樣的節點r;(2)判斷以r為根節點的子樹是不是包含和樹b一樣的結構。

第一步的實現比較簡單,其實就是前序遍歷二叉樹,將二叉樹a的節點的值和二叉樹b的根節點的值進行比較。第二步可以基於遞迴實現:如果節點r的值和樹b的根節點的值不一樣,則以r為根節點的子樹和樹b的結構肯定不一樣,如果值相等的話則遞迴地比較各自的左右節點的值是否一樣。這裡注意可能會出現空指標異常的情況。

實現**:

public

boolean

issubstructure

(treenode a, treenode b)

return flag;

}public

boolean

doestreeahastreeb

(treenode a, treenode b)

劍指offer26 樹的子結構

輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2 給定的樹 b 4 1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。示例 1 輸入 a 1,2,3 b 3,...

劍指 Offer 26 樹的子結構

輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2 給定的樹 b 4 1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。示例 1 輸入 a 1,2,3 b 3,...

劍指 Offer 26 樹的子結構

輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2 給定的樹 b 4 1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。definition for a bin...