JavaScript实现树的遍历算法示例【广度优先与深度优先】


Posted in Javascript onOctober 26, 2017

本文实例讲述了JavaScript实现树的遍历算法。分享给大家供大家参考,具体如下:

<script type="text/javascript">
var t = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19];
//下面这段深度优先搜索方法出自Aimingoo的【JavaScript语言精髓与编程实践】
var deepView = function(aTree,iNode) {
  (iNode in aTree) && (document.write(aTree[iNode]+'<br/>'),arguments.callee(aTree,2*iNode+1),arguments.callee(aTree,2*iNode+2))
}
//广度优先
var wideView = function(aTree,iNode) {
  var aRTree = aTree.slice(0),iRNode = iNode,iLevel = 1;
  (iRNode in aRTree) && document.write(aRTree[iRNode]+'<br/>');
  (function() {
    var iStart = iRNode*2+1,iEnd = iStart+Math.pow(2,iLevel);
    document.write(aRTree.slice(iStart,iEnd).join(',')+'<br/>');
    if(iEnd>=aRTree.length) return;
    iRNode = iStart,iLevel++,arguments.callee();
  })()
}
document.write('<h3>二叉树 深度优先</h3>');
//深度优先
deepView(t,0);
document.write('<h3>二叉树 广度优先</h3>');
//广度优先
wideView(t,0);
</script>

运行结果:

JavaScript实现树的遍历算法示例【广度优先与深度优先】

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
Oct 11 Javascript
JavaScript验证图片类型(扩展名)的函数分享
May 05 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
May 09 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
Oct 14 Javascript
Angular ui.bootstrap.pagination分页
Jan 20 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
一个Vue页面的内存泄露分析详解
Jun 25 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
Sep 30 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
详解滑动穿透(锁body)终极探索
Apr 16 Javascript
vue实现侧边栏导航效果
Oct 21 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
Oct 26 #Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
Oct 26 #Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
Oct 26 #Javascript
Node.js中环境变量process.env的一些事详解
Oct 26 #Javascript
Sublime Text新建.vue模板并高亮(图文教程)
Oct 26 #Javascript
vue+swiper实现组件化开发的实例代码
Oct 26 #Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 #Javascript
You might like
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
隐性调用php程序的方法
2015/06/13 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
对python函数签名的方法详解
2019/01/22 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
python中import与from方法总结(推荐)
2019/03/21 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
python变量的存储原理详解
2019/07/10 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
python实现微信打飞机游戏
2020/03/24 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
化学学院毕业生自荐信范文
2013/12/17 职场文书
外国人来华邀请函
2015/01/31 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP
Python编程编写完善的命令行工具
2021/09/15 Python
golang生成vcf通讯录格式文件详情
2022/03/25 Golang