2014-10-18 1 views
-2

트리 데이터 구조 또는 그래프로 배열의 목록을 변환 :자바 스크립트 기능이 내가 문자열 배열의 목록을 가지고

[FT, LW ,VN ] 
    [FT ,LW ,NV ] 
    [FT ,LL ,VN ] 
    [FT ,LL ,NV ] 
    [EM ,FT ,LW ] 
    [EM ,FT ,LL ] 

누군가가 이러한 배열을 처리하고를 만드는 자바 스크립트 함수 좀 도와 주실 래요 트리 또는 구조 같은 그래프. 같이해야하는 최종 출력은 다음과 같습니다

   FT 
     LW    LL 
    NV,VN,EM   VN,NV,EM 

나는이 기능을 시도하지만, 문제가 될 것 같다입니다. 나는 나무를 시작하는 2 개의 길을 얻는다. FT 및 EM.

function convertToHierarchy(arry/* array of array of strings */) { 
     var item, path; 
     // Discard duplicates and set up parent/child relationships 
     var children = {}; 
     var hasParent = {}; 
     for (var i = 0; i < arry.length; i++) { 
      var path = arry[i]; 
      var parent = null; 
      for (var j = 0; j < path.length; j++) { 
       var item = path[j]; 
       if (!children[item]) { 
        children[item] = {}; 
       } 
       if (parent) { 
        children[parent][item] = true; /* dummy value */ 
        hasParent[item] = true; 
       } 
       parent = item; 
      } 
     } 

     // Now build the hierarchy 
     var result = []; 
     for (item in children) { 
      if (!hasParent[item]) { 
       result.push(buildNodeRecursive(item, children)); 
      } 
     } 
     return result; 
    } 

    function buildNodeRecursive(item, children) { 
     var node = { 
      id : item, 
      children : [] 
     }; 
     for (var child in children[item]) { 
      node.children.push(buildNodeRecursive(child, children)); 
     } 
     return node; 
    } 

감사합니다.

+1

SO는 무료 코딩 서비스가 아닙니다. 당신은 혼자서 몇 가지 시도를해야만합니다. 문제가 발생하면 도와 드리겠습니다. – Barmar

+0

그 점을 이해합니다. 감사합니다. 재귀를 사용하여 트리 구조를 만들려고했지만 그다지 제대로 작동하지 않습니다. – user3084985

+0

EM이 왜 LW 아래에 있습니까? –

답변

0

나는 목록의 개수를 기준으로 정렬 할 수 있다고 생각합니다. 그리고 내가 언급 한 초기 함수를 사용하십시오. 도와 주셔서 감사합니다.