저는 현재 이진 나무를 연구하고 있습니다. 트리를 순회하는 매우 효율적인 코드를 발견했습니다 (예제에서는 순회 순회입니다). 그것은 내가 이해하는 개념으로 재귀를 사용합니다. 그러나 나는 이것이 실제로 어떻게 작동하는지에 대해 내 머리를 이해할 수 없습니다. 내가 혼란스러워하는 가장 중요한 것은 start.left가 항상 같은 숫자가 아니도록 매번 목록에 올라가는 방법입니다. 누군가 이것이 실제로 나무 위로 어떻게 이동하는지 단계별로 알려주시겠습니까? 미리 감사드립니다
질문에 명확성을 추가하려면 :
내 혼란이있는 곳은 코드가 4로 이동 한 것을 '알고'코드가 어디에 있는지 찾을 수 없다는 것입니다. 이제 반환 할 다음 요소는 2입니다. 이제 2에서 멈추고이를 반환하는 메커니즘은 어디에 있습니까? 곧?
class Node():
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def __str__(self):
return str(self.data)
class BinaryTree(object):
def __init__(self, root):
self.root = Node(root)
def inorder_print(self, start, traversal):
"""Left -> root -> right"""
if start:
traversal = self.inorder_print(start.left, traversal)
traversal += (str(start.data) + "-")
traversal = self.inorder_print(start.right, traversal)
return traversal
tree = BinaryTree(1)
tree.root.left = Node(2)
tree.root.right = Node(3)
tree.root.left.left = Node(4)
tree.root.left.right = Node(5)
tree.root.right.left = Node(6)
tree.root.right.right = Node(7)
tree.root.right.right.right = Node(8)
print(tree.inorder_print(tree.root, ""))
좋아, 좀 더 오래 앉아서 알아 냈어. 이 질문이 답변으로 표시 될 수 있도록 생각 id가 내 생각을 게시합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다