判斷二叉樹(shù)中的元素系列

LeetCode 100 相同的數(shù):

給定兩個(gè)二叉樹(shù),編寫(xiě)一個(gè)函數(shù)來(lái)檢驗(yàn)它們是否相同。
如果兩個(gè)樹(shù)在結(jié)構(gòu)上相同,并且節(jié)點(diǎn)具有相同的值,則認(rèn)為它們是相同的。

解題思路:
  1. 判斷空集
  2. 若非空, 判斷當(dāng)前節(jié)點(diǎn)的同時(shí),遞歸樹(shù)的左子數(shù)和右子數(shù)
代碼
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution(object):
    def isSameTree(self, p, q):
        if q is None and p is None:
            return True
        elif q is not None or p is not None:
            return q.val == p.val and self.isSameTree(p.left, q.left) \
                   and self.isSameTree(p.right,  q.right)

LeetCode 101 對(duì)稱(chēng)樹(shù):

給定一個(gè)二叉樹(shù),檢查它是否是鏡像對(duì)稱(chēng)的。
例如,二叉樹(shù) [1,2,2,3,4,4,3] 是對(duì)稱(chēng)的。


但是下面這個(gè) [1,2,2,null,3,null,3] 則不是鏡像對(duì)稱(chēng)的:


解題思路
  1. 判斷空集
  2. 若非空,與上一題類(lèi)似,只不過(guò)要判斷左子數(shù)和右子數(shù)是否相等
代碼
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution(object):
    def isSymmetric(self, root):
        """
        1. 時(shí)間復(fù)雜度:O(n)
        2. O(n),因?yàn)槲覀儽闅v整個(gè)輸入樹(shù)一次,所以總的運(yùn)行時(shí)間為O(n),
        其中n是樹(shù)中結(jié)點(diǎn)的總數(shù)。
        3. 空間復(fù)雜度:遞歸調(diào)用的次數(shù)受樹(shù)的高度限制。在最糟糕情況下,
        樹(shù)是線(xiàn)性的,其高度為O(n)。
        4. 因此,在最糟糕的情況下,由棧上的遞歸調(diào)用造成的空間復(fù)雜度為O(n)
        """
        root1 = root
        root2 = root
        return self.isMirror(root1, root2)
    def isMirror(self, root1, root2):
        if root1 is None and root2 is None:
            return True
        if root2 is not None and root2 is not None:
            return root1.val == root2.val and self.isMirror(root1.left, root2.right) \
                   and self.isMirror(root1.right, root2.left)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • data: 2018-12-26 21:02:10原文鏈接 題目 給定兩個(gè)二叉樹(shù),編寫(xiě)一個(gè)函數(shù)來(lái)檢驗(yàn)它們是否相同。...
    KThirty閱讀 166評(píng)論 0 0
  • 給定兩個(gè)二叉樹(shù),編寫(xiě)一個(gè)函數(shù)來(lái)檢驗(yàn)它們是否相同。如果兩個(gè)樹(shù)在結(jié)構(gòu)上相同,并且節(jié)點(diǎn)具有相同的值,則認(rèn)為它們是相同的。 C
    餅干不干閱讀 427評(píng)論 0 50
  • 題目描述 題解
    SmallRookie閱讀 362評(píng)論 0 0
  • 明智行動(dòng)的技巧 這是麥子的第71篇原創(chuàng)文章 (全文1800字,建議閱讀時(shí)間5分鐘) 你發(fā)現(xiàn)沒(méi)有,很多時(shí)候我們會(huì)比較...
    麥田的怪圈閱讀 301評(píng)論 0 1
  • 今天是第7天工作,抽午休的時(shí)間來(lái)簡(jiǎn)單寫(xiě)一下, 沒(méi)能去到重慶,也沒(méi)能去快樂(lè)學(xué)校下鄉(xiāng),留在成都,工作大多是出外勤,當(dāng)天...
    自南閱讀 284評(píng)論 0 0

友情鏈接更多精彩內(nèi)容