我正在從網站上解決以下問題:「編寫函數以查看二叉樹是否」超平衡「(我們剛製作的新樹屬性) 樹是」超平衡「如果任何兩個葉節點的深度之間的差異不大於1「。樹葉上的二叉樹深度
網站檢查兩個節點之間深度差異的方法是先深度優先搜索,然後將每個訪問節點的深度追加到稱爲深度的列表中,只要深度不在列表中:
if depth not in depths:
depths.append(depth)
# two ways we might now have an unbalanced tree:
# 1) more than 2 different leaf depths
# 2) 2 leaf depths that are more than 1 apart
if (len(depths) > 2) or \
(len(depths) == 2 and abs(depths[0] - depths[1]) > 1):
return False
我不明白的是,爲什麼我們要檢查兩種方式?僅僅檢查是否有兩種以上不同的葉片深度或兩種不同的葉片深度是不止一種分離度就足夠了?爲什麼這兩項檢查有用?
代碼/問題從源頭報價:InterviewCake.com
好問題;但由於其更多關於算法(而不是代碼問題),它更適合於[程序員.stackexchange.com](http://programmers.stackexchange.com) –
@BurhanKhalid自從什麼時候不是合適的地方詢問算法?幫助頁面明確指出算法是一個可以接受的主題... – yurib
請顯示更多代碼。現在'我們現在可能已經關心我了' – inspectorG4dget