輸入兩棵二叉樹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
限制:
與本題相似的題目,可對比學習:
步驟:b是否是a的一部分,若為false則進入第2步,否則結束;
b是否是a某子樹的一部分,遞迴處理直至某一層返回true或遞迴處理完所有節點;
演算法複雜度:m為a的總節點數,n為b的節點數
package leetcode;
/** * @author zhoujie
* @date 2023年5月22日 下午6:03:04
* @description: 面試題26. 樹的子結構
* */
public class leetcode_offer_26
// definition for a binary tree node.
class treenode_offer_26
}class solution_offer_26 else if (a != null && b != null) else
} /**
* @author: zhoujie
* @date: 2023年5月22日 下午6:07:56
* @param: @param a
* @param: @param b
* @param: @return
* @return: boolean
* @description: 判斷b是否是a某子樹的一部分
* */
private boolean checksubtree(treenode_offer_26 a, treenode_offer_26 b) else if (a != null && b != null && a.val == b.val) else
}}
LeetCode 面試題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,...
面試題26 樹的子結構
題目 輸入兩棵二叉樹a和b,判斷b是不是a的子結構。includeusing namespace std struct binarytreenode bool doestree1hastree2 binarytreenode proot1,binarytreenode proot2 bool equ...
面試題26 樹的子結構
題目 輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。示例 輸入 a 3,4,5,1,2 b 4,1 輸出 true 方法1 遞迴解法 思想 先再 a 中找到根結點相同的子樹,然後再判斷這顆子樹是否是我們要找到的子樹...