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 相关文章推荐
EXTJS记事本 当CompositeField遇上RowEditor
Jul 31 Javascript
JS时间选择器 兼容IE6,7,8,9
Jun 26 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
Jun 25 Javascript
jquery实现加载等待效果示例
Sep 25 Javascript
JS实现霓虹灯文字效果的方法
Aug 06 Javascript
JavaScript自学笔记(必看篇)
Jun 23 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
Vue生命周期示例详解
Apr 12 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
Sep 07 Javascript
gulp教程_从入门到项目中快速上手使用方法
Sep 14 Javascript
微信小程序App生命周期详解
Jan 31 Javascript
原生JavaScript实现幻灯片效果
Feb 19 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
根德YB400的电路分析
2021/03/02 无线电
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
js函数般调用正则
2008/04/08 Javascript
jQuery 常见学习网站与参考书
2009/11/09 Javascript
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
Javascript 面向对象 命名空间
2010/05/13 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
《理想》教学反思
2014/02/17 职场文书
授权委托书怎么写
2014/04/03 职场文书
《老山界》教学反思
2014/04/08 职场文书
2014年征兵标语
2014/06/20 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
作风建设年度心得体会
2014/10/29 职场文书
税务会计岗位职责
2015/04/02 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python