H5C3J 学习笔记 part4 Tree2
今天受到了一次不小的打击,虽然是我预期中的-_-#
平衡数,答对,但未存盘(WTF!)
最大临近数,答对。
二叉树可见结点数量,没写对 --###
同类项分区,没写对 --b
纯英文试卷和结束后的虚脱感,让我又回想起当年考SCJP后走出考场的时候。
然后觉得,作为非科班出身的程序员,基础知识有时候真的非常重要。
所以跟白爷借了算法基础的书,准备啃一点算一点。
今天值得纪录的有,获得二叉树的深度:
function getTreeDeep(tree)
{
var lDeep = 0;
var rDeep = 0;
var result = 0;
if(tree != null)
{
lDeep = getTreeDeep(tree.l);
rDeep = getTreeDeep(tree.r);
result = Math.max(lDeep,rDeep) + 1;
}
return result;
}
`</pre>
我的笨方法,按层级初始化树的数据,后面看看书,看看能不能做得科学一点。
<pre>` function createTree(vs,tl) {
var values = vs;
var totalLayers = tl;
var layerIndex = 0;
var maxNodeNumber;
var lastArr;
var tempArr;
var parentNode;
var root;
for (var i = 0; i < totalLayers; i++) {
tempArr = new Array();
maxNodeNumber = Math.pow(2, i);
for (var j = 0; j < maxNodeNumber; j++) {
var parentIndex = parseInt(j / 2);
var lOrR = j % 2;
var v = values[layerIndex++];
var tree = null;
if (v != null) {
tree = new Tree(v);
if (layerIndex == 1) {
root = tree;
}
tempArr.push(tree);
}
if (lastArr != null) {
parentNode = lastArr[parentIndex];
}
if (parentNode != null && tree != null) {
if (lOrR == 0) {
parentNode.l = tree;
} else {
parentNode.r = tree;
}
}
}
lastArr = tempArr;
}
return root;
}
Ivank的注册帧监听,跟Flash一样好用,赞!
然后有了这样一个Demo