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 new一个对象的实质
Jan 07 Javascript
Javascript表格翻页效果实现思路及代码
Aug 23 Javascript
jquery放大镜效果超漂亮噢
Nov 15 Javascript
删除节点的jquery代码
Jan 13 Javascript
jQuery插件开发详细教程
Jun 06 Javascript
JavaScript实现图片自动加载的瀑布流效果
Apr 11 Javascript
jQuery实现的简单在线计算器功能
May 11 jQuery
基于layui数据表格以及传数据的方式
Aug 19 Javascript
vue router 跳转时打开新页面的示例方法
Jul 28 Javascript
使用p5.js实现动态GIF图片临摹重现
Oct 23 Javascript
vue router-link 默认a标签去除下划线的实现
Nov 06 Javascript
JS实现手风琴特效
Nov 08 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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
php学习 函数 课件
2008/06/15 PHP
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
PHP生成树的方法
2015/07/28 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
js实现继承的5种方式
2015/12/01 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
CentOS中升级Python版本的方法详解
2017/07/10 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
表彰先进集体通报
2014/01/12 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
教师个人自我评价
2015/03/04 职场文书
教你怎么用python selenium实现自动化测试
2021/05/27 Python
golang特有程序结构入门教程
2021/06/02 Python
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
java开发双人五子棋游戏
2022/05/06 Java/Android