HA Treemap map()


このコードは学院テストコードで、特に説明はありません.
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
  • そしてこれchildren要素を巡るときにmap()を再呼び出します.
    再帰呼び出しのたびに、初期値に設定されたノードはツリー部分の親ノードとなり、子ノードは再び再帰呼び出しされます.
    この操作を繰り返すと、leafノードはmap()の実行後に親ノードにアタッチされ、再帰呼び出しが終了するため、最後に
    右上の木のようです.