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 相关文章推荐
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
Dec 29 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
Aug 28 Javascript
原生JS实现响应式瀑布流布局
Apr 02 Javascript
javascript实现tab响应式切换特效
Jan 29 Javascript
深入理解javascript中的 “this”
Jan 17 Javascript
JS实现匀加速与匀减速运动的方法示例
Sep 04 Javascript
jQuery实现的电子时钟效果完整示例
Apr 28 jQuery
Node.js命令行/批处理中如何更改Linux用户密码浅析
Jul 22 Javascript
egg.js的基本使用和调用数据库的方法示例
May 18 Javascript
解决Vue动态加载本地图片问题
Oct 09 Javascript
vue 子组件watch监听不到prop的解决
Aug 09 Javascript
ant design 日期格式化的实现
Oct 27 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
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
PHP 面向对象详解
2012/09/13 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
JavaScript 页面坐标相关知识整理
2010/01/09 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
Nodejs监听日志文件的变化的过程解析
2019/08/04 NodeJs
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
浅析Python基础-流程控制
2016/03/18 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
关于python多重赋值的小问题
2019/04/17 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
Django中使用MySQL5.5的教程
2019/12/18 Python
Django中modelform组件实例用法总结
2020/02/10 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
应用艺术专业个人的自我评价
2014/01/03 职场文书
派出所所长先进事迹
2014/05/19 职场文书
销售活动策划方案
2014/08/26 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
高中物理教学反思
2016/02/19 职场文书
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android