2013-03-12 4 views
-1

저는 자바 스크립트 프로젝트에 있는데 캔버스를 사용하여 트리를 그려야합니다. 이와 같이 : http://en.wikipedia.org/wiki/Binary_search_tree#Types자식을 가진 배열을 채우기위한 재귀 함수

각 노드는 내 프로젝트의 창을 나타내고 각 하위 노드는 이전 노드의 하위 노드입니다.

내가 같은 배열을 사용한다는 것을 확신 :

입니다
var node = { 
    windowId, 
    childs{} 
} 

, 노드가 해당 ID (WINDOWID)와 차일 {}으로, 루트 것은 다른 배열 그것은 같은 구조를 가질 것입니다. 예를 들어

:

var node = { 
     windowId, 
     childs{ 
      windowId //windowId of the child 
      childs{} 
     } 
    } 
    . 
    . 
    . 

내가 재귀 함수를 만드는거야,하지만 난하지 거의 아무것도 ... 당신이 나를 도울 수, 제발?

+2

먼저 JavaScript 구문을 배워야합니다. 노드 객체의'childs' 속성을 다른 노드 객체의'Array'로 만듭니다. 그리고 당신이 만든 코드를 보여주십시오. 복잡하지 않습니다. (링크 된 Wikipedia 기사에 샘플 코드가 있습니다.) – Bergi

+1

죄송합니다. 여기에 질문이 없습니다. _specific_ 질문을 공식화하면 도움을 줄 수는 있지만 디자인은하지 않겠습니다. –

답변

0

각 노드가 최상위 수준이 될 수 있다면 항상 하위를 허용하는 구조를 찾아야합니다. 예제를 확장하면 각 하위 목록을 배열로 만드는 것이 매우 쉽습니다.

{ 
    id: 0, 
    childs: [ 
     { 
     id: 0.1, 
     childs: [ ... ] 
     }, 
     { 
     id: 0.2, 
     childs: [ ... ] 
     }, 
     ... 
    ] 
} 

나머지는 변수에 현재 개체를 저장 한 다음 각 리프를 살펴보고 해당 들여 쓰기를 추가하십시오. 당신이 올바르게한다면, 당신은 하나의 그리기 기능을 가지고 당신이 필요로하는만큼 많은 시간을 부를 수 있습니다; 당신은 단지 레벨을 추적 할 필요가 있습니다.

+0

감사합니다. Andrei. 어쩌면 제 질문은 그다지 잘 설명하지 못 하겠지만, 당신이 저를 위해 일을 할 수 없다는 것을 알고 있기 때문에 ... 저는 단지 트랙을 찾고 있습니다. 감사. –