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 多种搜索引擎集成的页面实现代码
Jan 02 Javascript
jquery实现商品拖动选择效果代码(自写)
May 28 Javascript
jquery 图片缩放拖动的简单实例
Jan 08 Javascript
javascript实现自动输出文本(打字特效)
Aug 27 Javascript
js剪切板应用clipboardData实例解析
May 29 Javascript
JS代码实现根据时间变换页面背景效果
Jun 16 Javascript
AngularJS基础 ng-src 指令简单示例
Aug 03 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
Aug 23 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
Nov 25 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
Mar 30 Javascript
layui table 表格上添加日期控件的两种方法
Sep 28 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
May 10 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教程 变量定义
2009/10/23 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
jQuery基础知识小结
2014/12/22 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
使用Python制作表情包实现换脸功能
2019/07/19 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
Python列表操作方法详解
2020/02/09 Python
解决python运行效率不高的问题
2020/07/20 Python
Python 实现简单的客户端认证
2020/07/29 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
行政文员实习自我鉴定范文
2014/09/14 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
谢师宴学生致辞
2015/07/27 职场文书
python实现三次密码验证的示例
2021/04/29 Python
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android