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