1.堆的形状:完全二叉树
- 树:n个节点的有限集合,有且仅有一个根节点,其余节点可分为m个根节点的子树
- 节点的度:一个节点拥有子树的个数称为度
- 树的度:节点的度的最大值
- 叶子节点:度为0的节点
- 树的深度:节点的最大层次
- 二叉树:每个节点最多拥有两个子节点
- 遍历
- 深度优先遍历:先序遍历
- 广度优先遍历:从左到右,一层一层遍历
- 平衡二叉树:当且仅当两个子树的高度差不超过1。
- 满二叉树:高度:h ,节点:2^h - 1
- 完全二叉树:除最后一层外,其余每一层节点个数都是最大值
- eg: 度为0的节点:n0,度为1的节点:n1(0/1个) ,度为2的节点:n2
- n0 = n2 + 1
- n(完全二叉树的节点总数) = n0 + n1 + n2
- n = 2*n0+n1 -1
- n0 = (n+1)/2
2.0 == ""
为true
3.创建日期:日期的月份从0开始,new Date(1998,0,10)
4.Object.keys():返回的是一个包含对象中不重复的键的数组
var a = {1:'one',2:'two',2:'tree'};
var b = Object.keys(a);
console.log(b);[“1”,”2”]
5.函数表达式声明,没有返回值时返回undefined
var a = function () { };
console.log(a());
6.本来是字符串类型,经过运算变成布尔类型
var x = 'foo';
x = !!x;
console.log(x);//true
7.HTML5的input新增输入类型
- color number range email url search
- date pickers(date, month, week, time, datetime, datetime-local)
8.编程动画,全部用原生JS实现
先创建两个div,同行显示
第一个div A以5像素/100毫秒向B移动,碰到第二个div B后停止
第二个div B以同样的速度向相同方向移动
for(var i = 0; i < 2; i++) {
var div = document.createElement('div');
div.style.width = 50 + 'px';
div.style.height = 50 + 'px';
div.style.backgroundColor = 'red';
div.style.display = 'inline-block';
div.style.position = 'absolute';
div.style.left = 200*(i+1) + 50*i + 'px';
document.body.append(div);
}
var box = document.getElementsByTagName('div');
box[1].style.backgroundColor = 'green';
var timer1 = null,x = box[0].offsetLeft;
timer1 = setInterval(function() {
x += 5;
if(x <= 400) {
box[0].style.left = x + 'px';
}else {
clearInterval(timer1);
var timer2 = null,y = box[1].offsetLeft;
timer2 = setInterval(function() {
y += 5;
if(y <= 800) {
box[1].style.left = y + 'px';
}else {
clearInterval(timer2);
}
}, 100);
}
},100)