function mst() { var INF = 99999; var data = getData(); var tree = cal(data); function cal(data) { var dic1 = {}; dic1[0] = []; dic2 = [] for(var i = 1; i < data.length; i++) { dic2.push(i); } while(dic2.length != 0) { cmp(dic1, dic2, data); } console.log(dic1, dic2); } function cmp(dic1, dic2, data) { // dic // like this // var min = INF; var p1 = p2 = null; for(var i in dic1) { for(var j = 0; j < dic2.length; j++) { var len = data[i][dic2[j]]; if(len < min) { min = len; p1 = dic1[i]; p2 = dic2[j]; } } } if(p1 && p2 != -1) { p1.push(p2); dic1[p2] = []; var index = dic2.indexOf(p2); dic2.splice(index, 1); } } function getData() { var rst = []; rst.push([INF, 5, 6, INF, INF]); rst.push([5, INF, 4, 3, INF]); rst.push([6, 4, INF, 1, INF]); rst.push([INF, 3, 1, INF, 4]); rst.push([INF, INF, INF, 4, INF]); return rst; } }