HA Treemap map()

Judo·2020년 12월 20일
0

이 코드는 학원 테스트 코드로 따로 설명은 없다.

Tree.prototype.map = function(callback) {
    return this.children.reduce(function(tree, child) {
      return tree.addChild(child.map(callback));
    }, new Tree(callback(this.value)));
};

reduce를 이용해 새로 만들어질 트리의 root node를 reduce 함수의 초기값으로 설정한다.
-> new Tree(callback(this.value));

        1               2
     2     3	=>   4     6
   4   5 6   7     8  10 12 14
  • 그리고 this.children 요소들을 순회하면서 map()을 재귀 호출한다.
    재귀 호출 될 때마다 초기값으로 설정되는건 해당 트리 부분에 부모 노드가 되고 자식 노드들은 다시 재귀 호출이 된다.
    이를 반복 수행하면 leaf node들이 map() 실행 이후 부모 노드에 붙으면서 재귀 호출이 끝나기 때문에 마지막엔
    위 오른쪽 트리처럼 만들어진다.
profile
즐거운 코딩

0개의 댓글