国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Leetcode-每日一題【劍指 Offer 26. 樹的子結(jié)構(gòu)】

這篇具有很好參考價值的文章主要介紹了Leetcode-每日一題【劍指 Offer 26. 樹的子結(jié)構(gòu)】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目

輸入兩棵二叉樹A和B,判斷B是不是A的子結(jié)構(gòu)。(約定空樹不是任意一個樹的子結(jié)構(gòu))

B是A的子結(jié)構(gòu), 即 A中有出現(xiàn)和B相同的結(jié)構(gòu)和節(jié)點值。

例如:
給定的樹 A:

? ? ?3
? ? / \
? ?4 ? 5
? / \
?1 ? 2

給定的樹 B:

? ?4?
? /
?1

返回 true,因為 B 與 A 的一個子樹擁有相同的結(jié)構(gòu)和節(jié)點值。

示例 1:

輸入:A = [1,2,3], B = [3,1]
輸出:false

示例 2:

輸入:A = [3,4,5,1,2], B = [4,1]
輸出:true

限制:

  • 0 <= 節(jié)點個數(shù) <= 10000

解題思路

1.題目要求我們判斷B是不是A的子結(jié)構(gòu),我們用遞歸來解決這個問題。

2.二叉樹 B 為 A 的子結(jié)構(gòu)的情況一共有三種,滿足其中一種即可:

①子結(jié)構(gòu) B 的起點為 A 的根節(jié)點,即從 A 的根節(jié)點開始和 B 比較, 調(diào)用函數(shù) isSubStree:

  • 不相等,則返回 false;
  • 相等,則再比較 左子樹和右子樹都是否相等,都相等,才返回 true

②子結(jié)構(gòu) B 在 A 的左子樹中,即 B 的起點隱藏在 A 的左子樹中,此時調(diào)用函數(shù) isSubStructure;
③子結(jié)構(gòu) B 在 A 的右子樹中,即 B 的起點隱藏在 A 的右子樹中,此時調(diào)用函數(shù) isSubStructure。

3.舉個例子:

Leetcode-每日一題【劍指 Offer 26. 樹的子結(jié)構(gòu)】,算法每日一題,leetcode,算法,職場和發(fā)展

我們先從 A 的根節(jié)點開始和 B 比較,調(diào)用函數(shù) isSubStree:

根節(jié)點相等,則再比較 左子樹和右子樹都是否相等,都不1相等,返回 false。

Leetcode-每日一題【劍指 Offer 26. 樹的子結(jié)構(gòu)】,算法每日一題,leetcode,算法,職場和發(fā)展?我們猜測子結(jié)構(gòu) B 在 A 的左子樹中,即 B 的起點隱藏在 A 的左子樹中,此時調(diào)用函數(shù) isSubStructure

Leetcode-每日一題【劍指 Offer 26. 樹的子結(jié)構(gòu)】,算法每日一題,leetcode,算法,職場和發(fā)展

?在左子樹中調(diào)用函數(shù) isSubStree,根節(jié)點都不同則返回 false;再往左子樹走,

Leetcode-每日一題【劍指 Offer 26. 樹的子結(jié)構(gòu)】,算法每日一題,leetcode,算法,職場和發(fā)展

?依舊不同,此時我們返回上一級,去看看右子樹

Leetcode-每日一題【劍指 Offer 26. 樹的子結(jié)構(gòu)】,算法每日一題,leetcode,算法,職場和發(fā)展

也不同,此時A的左子樹全部檢索完畢,我們需要檢索右子樹

Leetcode-每日一題【劍指 Offer 26. 樹的子結(jié)構(gòu)】,算法每日一題,leetcode,算法,職場和發(fā)展?這時我們調(diào)用函數(shù) isSubStree,根節(jié)點相等,則再比較 左子樹和右子樹都是否相等,都相等,返回 true。代表我們找到了子結(jié)構(gòu)。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-645215.html

代碼實現(xiàn)

lass Solution {
    public boolean isSubStructure(TreeNode A, TreeNode B) {
        if(A == null || B == null){
            return false;
        }
        if(isSubTree(A, B)){
            return true;
        }
        if(isSubStructure(A.left, B) || isSubStructure(A.right, B)){
            return true;
        }
        return false;

    }
    boolean isSubTree(TreeNode TA, TreeNode TB){
        if(TB == null){
            return true;
        }
        if(TA == null){
            
            return false;
        }
        if(TB.val != TA.val){
            return false;
        }
        return isSubTree(TA.left , TB.left) &&
        isSubTree(TA.right, TB.right);
    }

}

測試結(jié)果

Leetcode-每日一題【劍指 Offer 26. 樹的子結(jié)構(gòu)】,算法每日一題,leetcode,算法,職場和發(fā)展

?

到了這里,關(guān)于Leetcode-每日一題【劍指 Offer 26. 樹的子結(jié)構(gòu)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 二叉樹(中)+Leetcode每日一題——“數(shù)據(jù)結(jié)構(gòu)與算法”“劍指Offer55-I. 二叉樹的深度”“100.相同的樹”“965.單值二叉樹”

    二叉樹(中)+Leetcode每日一題——“數(shù)據(jù)結(jié)構(gòu)與算法”“劍指Offer55-I. 二叉樹的深度”“100.相同的樹”“965.單值二叉樹”

    各位CSDN的uu們你們好呀,今天繼續(xù)數(shù)據(jù)結(jié)構(gòu)與算法專欄中的二叉樹,下面,讓我們進入二叉樹的世界吧!??! 二叉樹(上)——“數(shù)據(jù)結(jié)構(gòu)與算法”_認真學習的小雅蘭.的博客-CSDN博客 二叉樹鏈式結(jié)構(gòu)的實現(xiàn) 二叉樹鏈式結(jié)構(gòu)的實現(xiàn) 求二叉樹的高度 但是這種寫法有很大的問題

    2024年02月17日
    瀏覽(32)
  • Leetcode-每日一題【劍指 Offer 29. 順時針打印矩陣】

    Leetcode-每日一題【劍指 Offer 29. 順時針打印矩陣】

    輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數(shù)字。 示例 1: 輸入: matrix = [[1,2,3],[4,5,6],[7,8,9]] 輸出: [1,2,3,6,9,8,7,4,5] 示例 2: 輸入: matrix =?[[1,2,3,4],[5,6,7,8],[9,10,11,12]] 輸出: [1,2,3,4,8,12,11,10,9,5,6,7] 限制: 0 = matrix.length = 100 0 = matrix[i].length?= 100 1.題目要求

    2024年02月13日
    瀏覽(27)
  • (鏈表) 劍指 Offer 24. 反轉(zhuǎn)鏈表 ——【Leetcode每日一題】

    (鏈表) 劍指 Offer 24. 反轉(zhuǎn)鏈表 ——【Leetcode每日一題】

    難度:簡單 定義一個函數(shù),輸入一個鏈表的頭節(jié)點,反轉(zhuǎn)該鏈表并輸出反轉(zhuǎn)后鏈表的頭節(jié)點。 示例: 輸入 : 1-2-3-4-5-NULL 輸出 : 5-4-3-2-1-NULL 限制 : 0 = 節(jié)點個數(shù) = 5000 注意:本題與 206. 反轉(zhuǎn)鏈表 相同。 ??思路: 法一:遞歸 可以將本問題分解成子問題: 1 - (剩余部分的反轉(zhuǎn))

    2024年02月15日
    瀏覽(29)
  • Leetcode-每日一題【劍指 Offer 16. 數(shù)值的整數(shù)次方】

    Leetcode-每日一題【劍指 Offer 16. 數(shù)值的整數(shù)次方】

    實現(xiàn)?pow(x,?n)?,即計算 x 的 n 次冪函數(shù)(即,xn)。不得使用庫函數(shù),同時不需要考慮大數(shù)問題。 示例 1: 輸入: x = 2.00000, n = 10 輸出: 1024.00000 示例 2: 輸入: x = 2.10000, n = 3 輸出: 9.26100 示例 3: 輸入: x = 2.00000, n = -2 輸出: 0.25000 解釋: 2-2 = 1/22 = 1/4 = 0.25 提示: -10

    2024年02月13日
    瀏覽(22)
  • 【數(shù)據(jù)結(jié)構(gòu)-二叉樹 九】【樹的子結(jié)構(gòu)】:樹的子結(jié)構(gòu)

    【數(shù)據(jù)結(jié)構(gòu)-二叉樹 九】【樹的子結(jié)構(gòu)】:樹的子結(jié)構(gòu)

    廢話不多說,喊一句號子鼓勵自己:程序員永不失業(yè),程序員走向架構(gòu)!本篇Blog的主題是【子結(jié)構(gòu)】,使用【二叉樹】這個基本的數(shù)據(jù)結(jié)構(gòu)來實現(xiàn),這個高頻題的站點是: CodeTop ,篩選條件為: 目標公司+最近一年+出現(xiàn)頻率排序 ,由高到低的去 ??蚑OP101 去找,只有兩個地方

    2024年02月07日
    瀏覽(21)
  • Leetcode-每日一題【劍指 Offer 11. 旋轉(zhuǎn)數(shù)組的最小數(shù)字】

    Leetcode-每日一題【劍指 Offer 11. 旋轉(zhuǎn)數(shù)組的最小數(shù)字】

    把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。 給你一個可能存在?重復(fù)?元素值的數(shù)組?numbers?,它原來是一個升序排列的數(shù)組,并按上述情形進行了一次旋轉(zhuǎn)。請返回旋轉(zhuǎn)數(shù)組的最小元素。例如,數(shù)組?[3,4,5,1,2] 為 [1,2,3,4,5] 的一次旋轉(zhuǎn),該數(shù)組的

    2024年02月14日
    瀏覽(21)
  • Leetcode-每日一題【劍指 Offer 06. 從尾到頭打印鏈表】

    Leetcode-每日一題【劍指 Offer 06. 從尾到頭打印鏈表】

    輸入一個鏈表的頭節(jié)點,從尾到頭反過來返回每個節(jié)點的值(用數(shù)組返回)。 示例 1: 輸入: head = [1,3,2] 輸出: [2,3,1] 限制: 0 = 鏈表長度 = 10000 1.題目要求我們從尾到頭反過來返回每個節(jié)點的值,這道題我們可以用棧去解決,但是我們還可以采用另一種方法。就是我們可以

    2024年02月13日
    瀏覽(19)
  • (字符串 ) 劍指 Offer 05. 替換空格 ——【Leetcode每日一題】

    (字符串 ) 劍指 Offer 05. 替換空格 ——【Leetcode每日一題】

    難度:簡單 請實現(xiàn)一個函數(shù),把字符串 s 中的每個 空格 替換成 “ %20 ”。 示例 1: 輸入:s = “We are happy.” 輸出:“We%20are%20happy.” 限制 : 0 = s 的長度 = 10000 ??思路:雙指針法 如果想把這道題目做到 極致 ,就不要只用額外的輔助空間了! 首先擴充數(shù)組到每個空格替換

    2024年02月08日
    瀏覽(30)
  • (搜索) 劍指 Offer 12. 矩陣中的路徑 ——【Leetcode每日一題】

    (搜索) 劍指 Offer 12. 矩陣中的路徑 ——【Leetcode每日一題】

    難度:中等 給定一個 m * n 二維字符網(wǎng)格 board 和一個字符串單詞 word 。如果 word 存在于網(wǎng)格中,返回 true ;否則,返回 false 。 單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內(nèi)的字母不允許

    2024年02月12日
    瀏覽(27)
  • Leetcode-每日一題【劍指 Offer 35. 復(fù)雜鏈表的復(fù)制】

    Leetcode-每日一題【劍指 Offer 35. 復(fù)雜鏈表的復(fù)制】

    請實現(xiàn)? copyRandomList ?函數(shù),復(fù)制一個復(fù)雜鏈表。在復(fù)雜鏈表中,每個節(jié)點除了有一個? next ?指針指向下一個節(jié)點,還有一個? random ?指針指向鏈表中的任意節(jié)點或者? null 。 示例 1: 輸入: head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 輸出: [[7,null],[13,0],[11,4],[10,2],[1,0]] 示例 2: 輸入

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包