日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode Algorithm 101. Symmetric Tree

發(fā)布時間:2024/5/7 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode Algorithm 101. Symmetric Tree 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Title

給定一個二叉樹,檢查它是否是鏡像對稱的。

例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。

1/ \2 2/ \ / \ 3 4 4 3

但是下面這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的:

1/ \2 2\ \3 3

Solve

遞歸:深度優(yōu)先

如果一個樹的左子樹與右子樹鏡像對稱,那么這個樹是對稱的。


所以此問題可以轉(zhuǎn)化為:兩棵樹在什么情況下互為鏡像?必須滿足以下條件:

  • 它們的兩個根節(jié)點具有相同的值
  • 每個樹的右子樹與另一個樹的左子樹鏡像對稱

  • 可以實現(xiàn)一個遞歸函數(shù),通過「同步移動」兩個指針的方法來遍歷這棵樹,p 指針和 q 指針一開始都指向這棵樹的根,隨后 p 右移時,q 左移,p 左移時,q 右移。每次檢查當(dāng)前 p 和 q 節(jié)點的值是否相等,如果相等再判斷左右子樹是否對稱。

    def isSymmetric_D(self, root: TreeNode) -> bool:def check(p: TreeNode, q: TreeNode):if p is None and q is None:return Trueif p is None or q is None:return Falsereturn p.val == q.val and check(p.left, q.right) and check(p.right, q.left)return check(root, root)

    復(fù)雜度分析

    假設(shè)樹上一共 n 個節(jié)點。

    時間復(fù)雜度:這里遍歷了這棵樹,漸進時間復(fù)雜度為 O(n)。

    空間復(fù)雜度:這里的空間復(fù)雜度和遞歸使用的棧空間有關(guān),這里遞歸層數(shù)不超過 n,故漸進空間復(fù)雜度為 O(n)。

    迭代:廣度優(yōu)先

    引入一個隊列,初始化時把根節(jié)點入隊兩次,每次提取兩個節(jié)點并比較它們的值,隊列中每兩個連續(xù)的節(jié)點英愛是相等的,而且它們的子樹互為鏡像,然后將兩個節(jié)點的左右子節(jié)點按相反的順序插入隊列中,當(dāng)隊列為空時,或者我們檢測到樹不對稱時,算法結(jié)束。

    def isSymmetric_B(self, root: TreeNode) -> bool:def check(x: TreeNode, y: TreeNode):from queue import Queueq = Queue()q.put(x)q.put(y)while not q.empty():u = q.get()v = q.get()if not u and not v:continueif (not u or not v) or (u.val != v.val):return Falseq.put(u.left)q.put(v.right)q.put(u.right)q.put(v.left)return Truereturn check(root, root)

    復(fù)雜度分析

    時間復(fù)雜度:O(n),這里遍歷了這棵樹,漸進時間復(fù)雜度為 O(n)。

    空間復(fù)雜度:這里需要用一個隊列來維護節(jié)點,每個節(jié)點最多進隊一次,出隊一次,隊列中最多不會超過 n 個點,故漸進空間復(fù)雜度為 O(n)。

    總結(jié)

    以上是生活随笔為你收集整理的LeetCode Algorithm 101. Symmetric Tree的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。