我不是程序員,但作爲我的個人項目的一部分我很想了解是否有遞歸解決方案能夠打印二叉樹廣度第一,水平順序?我知道可以使用迭代深度優先算法?深度第一次迭代加深算法首先打印二叉樹的寬度
#Helper method
def getChildren(node):
children=[]
hasLeft = node.left is not None
hasRight = node.right is not None
if not hasLeft and not hasRight:
return []
if hasLeft:
children.append(node.left)
if hasRight:
children.append(node.right)
return children
def DLS(node, depth):
"""Depth Limited Search"""
if (depth == 0):
return node
elif (depth > 0):
print node.value,
children = getChildren(node)
for child in children:
DLS(child, depth-1)
else:
return False
對於下列二叉樹:
(1)3
(2)2 (3)1
(4)1 (5)1 (6)1 (7)0
(8)1 (9)0
我得到這個遍歷輸出: (1)3 (2)2 (4)1 (8)1 (9)0 (5)1 (3)1 (6)1 (7)0 None
這不是水平順序,但預購深度優先。
我是否必須迭代DLS
函數的深度?我將如何實現二叉樹的級別打印輸出?
非常感謝 亞歷
嗨@andrewcooke我確實認爲我在問我三個問題的同一個問題;但我一直在思考一些想法和反饋意見,所以熱衷於繼續詢問這個問題。我並不想刪除我的問題,因爲我想回顧一下我在學習時給出的回覆。有什麼方法可以將我的舊問題歸檔,所以我可以回顧一下嗎?謝謝 – Alex2134 2012-03-16 23:15:41