Python對(duì)稱的二叉樹多種思路實(shí)現(xiàn)方法
對(duì)稱二叉樹的含義非常容易理解,左右子樹關(guān)于根節(jié)點(diǎn)對(duì)稱,具體來(lái)講,對(duì)于一顆對(duì)稱二叉樹的每一顆子樹,以穿過根節(jié)點(diǎn)的直線為對(duì)稱軸,左邊子樹的左節(jié)點(diǎn)=右邊子樹的右節(jié)點(diǎn),左邊子樹的右節(jié)點(diǎn)=左邊子樹的左節(jié)點(diǎn)。所以對(duì)稱二叉樹的定義是針對(duì)一棵樹,而判斷的操作是針對(duì)節(jié)點(diǎn),這時(shí)可以采取由上到下的順序,從根節(jié)點(diǎn)依次向下判斷,只需要重復(fù)調(diào)用函數(shù),不需要回溯。
題目:對(duì)稱的二叉樹題:
請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),用來(lái)判斷一顆二叉樹是不是對(duì)稱的。注意,如果一個(gè)二叉樹同此二叉樹的鏡像是同樣的,定義其為對(duì)稱的
解題思路一:先遍歷右子節(jié)點(diǎn)再遍歷左子節(jié)點(diǎn)。注意,我們必須把遍歷二叉樹時(shí)遇到的空指針考慮進(jìn)來(lái)。
class Solution:
def isSymmetrical(self, pRoot):
# write code here
return self.isSymmetricalCore(pRoot,pRoot)
def isSymmetricalCore(self,pRoot1,pRoot2):
if not pRoot1 and not pRoot2:
return True
if not pRoot1 or not pRoot2:
return False
if pRoot1.val != pRoot2.val:
return False
return self.isSymmetricalCore(pRoot1.left,pRoot2.right) and self.isSymmetricalCore(pRoot1.right,pRoot2.left)
解題思路二:迭代
def isSymmetric(self, root: 'TreeNode') -> 'bool':
stack = root and [(root.left, root.right)]
while stack:
p1, p2 = stack.pop()
if not p1 and not p2: continue
if not p1 or not p2: return False
if p1.val != p2.val: return False
stack.append((p1.left, p2.right))
stack.append((p1.right, p2.left))
return True
到此這篇關(guān)于Python對(duì)稱的二叉樹多種思路實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Python對(duì)稱的二叉樹內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
將python依賴包打包成window下可執(zhí)行文件bat方式
今天小編就為大家分享一篇將python依賴包打包成window下可執(zhí)行文件bat方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-12-12
MacOS(M1芯片 arm架構(gòu))下安裝PyTorch的詳細(xì)過程
這篇文章主要介紹了MacOS(M1芯片 arm架構(gòu))下安裝PyTorch的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
python打包生成的exe文件運(yùn)行時(shí)提示缺少模塊的解決方法
今天小編就為大家分享一篇python打包生成的exe文件運(yùn)行時(shí)提示缺少模塊的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-10-10
完美處理python與anaconda環(huán)境變量的沖突問題
這篇文章主要介紹了完美處理Python與anaconda環(huán)境變量的沖突問題,對(duì)anaconda感興趣的同學(xué),可以參考下2021-04-04
python Web開發(fā)你要理解的WSGI & uwsgi詳解
這篇文章主要給大家介紹了關(guān)于python Web開發(fā)你一定要理解的WSGI & uwsgi的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
Python面向?qū)ο笾接袑傩院退接蟹椒☉?yīng)用案例分析
這篇文章主要介紹了Python面向?qū)ο笾接袑傩院退接蟹椒?結(jié)合具體案例形式簡(jiǎn)單分析了面向?qū)ο蟪绦蛟O(shè)計(jì)中私有屬性與私有方法的基本功能與使用注意事項(xiàng),需要的朋友可以參考下2019-12-12
python內(nèi)置模塊datetime.timedelta計(jì)算時(shí)間間隔示例代碼
Python的datetime模塊提供了處理日期和時(shí)間的功能,包括datetime.date、datetime.time、datetime.datetime、datetime.timedelta等類,timedelta用于表示時(shí)間間隔,支持日期和時(shí)間的加減運(yùn)算,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2025-04-04

