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 相关文章推荐
jQuery Tools tab使用介绍
Jul 14 Javascript
JS实现随机数生成算法示例代码
Aug 08 Javascript
多种方法判断Javascript对象是否存在
Sep 22 Javascript
node.js中的events.emitter.once方法使用说明
Dec 10 Javascript
推荐一款jQuery插件模板
Jan 09 Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
Mar 03 Javascript
jquery实现两边飘浮可关闭的对联广告
Nov 27 Javascript
input输入框内容实时监测(附代码)
Aug 15 Javascript
浅谈React高阶组件
Mar 28 Javascript
使用Node.js写一个代码生成器的方法步骤
May 10 Javascript
vue打包npm run build时候界面报错的解决
Aug 13 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 配置文件中open_basedir选项作用
2009/07/19 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
Python的Django框架中的数据过滤功能
2015/07/17 Python
Python如何为图片添加水印
2016/11/25 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
Python线程创建和终止实例代码
2018/01/20 Python
Python中的TCP socket写法示例
2018/05/11 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
怎样比较两个类型为String的字符串
2016/08/17 面试题
犯错检讨书
2014/02/21 职场文书
感谢信格式范文
2015/01/22 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫