劍指 Offer 26 樹的子結構

2021-10-20 22:27:01 字數 1049 閱讀 9219

總結

輸入兩棵二叉樹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,1]

輸出:false

示例 2:

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

輸出:true

巨集觀角度看待這道題。兩個遞迴:乙個用於比較兩棵樹結構是否相同(recur);另乙個遞迴a的各個節點,並以這些節點為根節點利用recur和b比較。

1、構建乙個遞迴函式recur,用於比較兩棵樹結構是否相同,返回值是true或false;

2、特殊情況為a為空樹或者b為空樹;

3、特殊情況之後,遞迴recur(a, b)判斷原始輸入的a、b是否相同,是的話直接返回true;

4、隨後用||來遞迴a,issubstructure(a.left, b),如此就能以a的每個節點作為根節點都與b比較,只要能找出這個能使recur函式返回true的節點,則該節點為根節點的樹就是和b結構相同的部分。

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

boolean

recur

(treenode a, treenode b)

if(a == null || a.val != b.val)

return

recur

(a.left, b.left)

&&recur

(a.right, b.right);}

}

暫時沒有總結,待續。。。

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