LeetCode 101.對稱二叉樹 python/scala

Symmetric Tree

環(huán)境:python 3.6,scala 2.11.8

題意

判斷是否對稱二叉樹(以根節(jié)點為中垂線鏡像對稱,包括結(jié)構(gòu)和節(jié)點值)。

分析

轉(zhuǎn)換思路:先判斷兩顆樹是否相同(結(jié)構(gòu)+節(jié)點值),再判斷根節(jié)點的左子樹和右子樹是否相同即可;

這里只寫出最簡寫法,更多寫法參考相同的樹。

代碼

python

def isSymmetric(root):
    """
    :type root: TreeNode
    :rtype: bool
    """
    def dfs(p, q):
        if not p and not q: return True
        if not p or not q: return False
        left_same = dfs(p.left, q.right)
        right_same = dfs(p.right, q.left)
        return p.val == q.val and left_same and right_same
    return dfs(root.left, root.right) if root else True

scala

object LC101 {
  def isSymmetric(root: TreeNode): Boolean = {
    def dfs(p: TreeNode, q: TreeNode): Boolean = (p, q) match {
      case (null, null) => true
      case (null, _) | (_, null) => false
      case _ => p.value == q.value & dfs(p.left, q.right) & dfs(p.right, q.left)
    }
    if (root == null) true else dfs(root.left, root.right)
  }
}

最后

歡迎交流和補(bǔ)充

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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