ebeveyn referanslarla
Onun üst bir referansı vardır böylece her düğüm kurmak, sadece derin düğümü bulmak ve sonra ebeveynler aracılığıyla takip ederek ağacın köküne kadar oradan geri yürüyebilir. Bu kesinlikle ekstra sahip pahasına yapmanın en kolay şeydir parentNodeher düğüm referans değişkeni.
# Iterate through parents to trace the path in reverse.
node = deepestNode(tree)
while node.parent != None:
node = node.parent
ebeveyn referanslar olmadan
Üst başvuruları yoksa sen ağacın üzerinden recurse olarak, o zaman "güncel" düğüme ağacın kökünden yolun takip edebilirsiniz. Her zaman dışarı alt "en uzun yolu şimdiye kadar" olarak yolu artık önceki daha uzunsa "en uzun yolu şimdiye kadar" bu yolu kaydedin. Etkili senin çağrı yığını açık hale gelir.
İşte bazı Python imsi kod:
# Public function. Sets up globals and then calls helper.
def deepestPath(tree):
global longestPath, currentPath
# Reset for a new search.
longestPath = []
currentPath = []
_deepestPath(tree.root)
return longestPath
# Helper function that does the real work.
def _deepestPath(node):
global longestPath, currentPath
currentPath.append(node)
# No children, we've bottomed out.
if not node.left and not node.right:
if currentPath.length > longestPath.length:
# Save a copy of the current path.
longestPath = list(currentPath)
# Recurse into children.
else:
if node.left: _deepestPath(node.left)
if node.right: _deepestPath(node.right)
currentPath.pop(node)