2012-11-02 8 views
2

할당이 끝났으므로 출력이 멋지게 보이므로 이진 트리 (배열로 표시)의 트리 구조를 인쇄 할 수있는 인쇄 방법이 필요합니다. 트리의 배열 표현 이진 트리의 배열 표현 (인쇄 방법)

:

노드의 경우 : 나

어린이 : 2 * I, 2 * I + 1

상위 : I/2

예를 들어, 배열의 경우

value 10 5 8 2 3 6 7 
index 1 2 3 4 5 6 7 
,451,515,

트리 표현해야한다 :

 10 
    5  8 
2 3 6 7 

그것은 위 그림과 같이 동일한 표현 일 필요는 없습니다. 트리를 올바르게 표시하는 표현 일 수 있습니다.

누군가 나를 도와 줄 수 있습니까? 감사합니다.

답변

1

꽤 쉬워야합니다. 첫 번째 행의 경우 1을 인쇄하십시오. 두 번째 행은 배열 요소 2, 3을 인쇄합니다. 세 번째 행은 배열 요소 4,5,6,7을 인쇄합니다. 네 번째 줄, 8,9,10,11,12,13,14,15. 패턴을 봐? 각 행에 2^n ~ 2^(n + 1) - 1 요소를 인쇄합니다. 여기서 맨 위 행은 0입니다.

두 자녀가없는 노드가있는 경우이 null 자식 노드는 여전히 배열에서 공백을 사용한다고 가정합니다.

+0

답장을 보내 주셔서 감사합니다. 알 겠어! 배열을 사용하여 트리의 레벨을 계산하는 방법을 알려주시겠습니까? 예를 들어, 배열에 요소가 1 개있는 경우 해당 요소의 수준은 1입니다. 2-3 요소, 수준이 2이면 , 4-7 요소, 수준은 3 등입니다. 계산할 수식이 있습니까? – CSCSCS

+0

각 레벨은 이전 레벨의 두 배가 있으므로 전체 이진 트리의 항목 수는 2의 제곱 (1)입니다. 다른 방법으로 이동하여 깊이를 찾으려면 기본 2 로그를 사용할 수 있어야합니다. – xpda