ife遍历:数组遍历、二叉树树遍历、计时器的总结



二叉树遍历


这里写图片描述

前序遍历是先序遍历是先访问根结点,再左子树,再右子树

这里写图片描述

中序遍历是先访问左子树, 再根结点,再右子树,

这里写图片描述

后序是先访问左子树, 再右子树,再根结点。

遍历的方式是用递归的方式,但效率较低。

show函数放的地方不同,决定了是按照什么方法遍历

 function preOrder(treeRoots){
     if(!(treeRoots==null)){
                                               必要判断是否为空
         show(treeRoots);          前序遍历
         preOrder(treeRoots.firstElementChild);
         preOrder(treeRoots.lastElementChild);
         }
}
 function inOrder(treeRoots){
         if(!(treeRoots==null)){     中序遍历
         inOrder(treeRoots.firstElementChild);    
         show(treeRoots);
         inOrder(treeRoots.lastElementChild);
         }
}
 function lastOrder(treeRoots){
         if(!(treeRoots==null)){       后序遍历
         lastOrder(treeRoots.firstElementChild);
         lastOrder(treeRoots.lastElementChild);
         show(treeRoots);
        }
}
 function show(node){          遍历时显示的函数
     node.style.backgroundColor="#ffffff";
     setTimeout(function(){
         node.style.backgroundColor="#232323";
     },timer+=200);
     setTimeout(function(){
         node.style.backgroundColor="#ffffff";
     },timer+=200);
 }


遍历中需要显示的元素通常用数组的方法来进行保存或进行二步操作,而用到数组遍历的方法也很多,此处一并总结。


数组中遍历的方法如下:

1、for方法:这个方法就不说了,for(;;){

}


2、forEach方法:

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach() 对于空数组是不会执行回调函数的。

这个方法执行是没有返回值的,对原来数组也没有影响;

array.forEach(function(currentValue, index, arr), thisValue)
参数描述
function(currentValue, index, arr)必需。 数组中每个元素需要调用的函数。
函数参数:
参数描述
currentValue必需。当前元素
index可选。当前元素的索引值。
arr可选。当前元素所属的数组对象。
thisValue可选。传递给函数的值一般用 "this" 值。
如果这个参数为空, "undefined" 会传递给 "this" 值
注意function要传入一个代表当前元素的必须值。

3、map方法:

map与forEach很像。

ary.map(function (item,index,input)
只不过map有return值,返回的是一个改变后的新的数组。

两者的兼容方法写在一篇专门关于兼容的文字收集里面吧。


4、for in方法

var arr = new Array("first", "second", "third") 
for(var item in arr) {
document.write(arr[item]+",");
}

 for in 会遍历到元素中的可枚举的属性和原型方法。method 和 name属性。

所以不适合遍历数组,适合遍历对象。

for in遍历的是索引(键值)

5、 for of:)

需要ES6的支持哦。

for(let value of arr) {  
   
});
for of是除了for以外遍历数组的一个好方法,
不会遍历原型方法和属性。
遍历的是元素值

跳出循环:

  • return:结束循环并中断函数执行;
  • break:结束循环函数继续执行;
  • continue :跳过本次循环;
  • for 循环中的变量 i,由于 ES5并没有块级作用域的存在,它在循环结束以后仍然存在于内存中,所以建议使用函数自执行的方式来避免;


js中的定时器

1、setTimeout(function,time)

两个属性都必须,等待一定的time时间,就执行函数function。只执行一次,就停止定时器。如果需要重复执行,就要多次调用自身。

steInterval(function,time)

两个属性都必须,等待一定时间time后,多次重复调用function,等到执行结束定时器的方法才结束。

 

2、定时器的返回值。

var time1=Window.setTimeout var time2=window.setInterval 等等

每个定时器按顺序返回第几个定时器的数值。即使消除了一个定时器,其返回值还是不会清除,   排名还继续往后。


3、消除定时器。

window.clearInterval(timer1) 和 window.clearTimeout(timer1).

消除定时器两种方法并没有区别.

而且参数不仅为timer1 \ timer2  还能是 其返回值 1和2等.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值