저는 프로그래머가 아니지만 제 개인 프로젝트의 일부로 이진 트리를 인쇄 할 수있는 재귀 적 솔루션이 있는지 이해하려고합니다. 폭 우선, 레벨 순서? 반복 깊이 우선 알고리즘을 사용할 수 있다는 것을 알고 있습니까? 다음 이진 트리를 들어깊이 우선 이진 심화 알고리즘을 사용하여 이진 트리 너비를 먼저 인쇄하십시오.
#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 (4)1 (8)1 (9)0 (5)1 (3)1 (6)1 (7)0 None
첫 번째 레벨 순서 만 예약 주문 깊이되지 않습니다 : 나는이 통과 출력을 얻고있다
(1)3
(2)2 (3)1
(4)1 (5)1 (6)1 (7)0
(8)1 (9)0
.
DLS
함수의 깊이를 반복해야합니까? 어떻게 이진 트리의 레벨 순서 출력을 구현할 수 있습니까?
많은 감사 알렉스 데이터 구조의 관점에서
안녕하세요 @ 앤드류 코크 저는 제 질문 중 세 가지를 통해 같은 질문을하고 싶다고 생각했습니다. 그러나 나는 아이디어와 피드백의 일부를 생각해봤을 때이 주제에 대해 계속 묻고 싶어했다. 나는 내가 배운대로 응답을 되돌려보고 싶기 때문에 내 질문을 삭제하고 싶지 않았습니다. 오래된 질문을 보관할 수있는 방법이 있습니까? 다시 참조 할 수 있습니까? 감사합니다 – Alex2134