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 相关文章推荐
js获取单元格自定义属性值的代码(IE/Firefox)
Apr 05 Javascript
javascript instanceof 内部机制探析
Oct 15 Javascript
js加载之使用DOM方法动态加载Javascript文件
Nov 08 Javascript
js中split函数的使用方法说明
Dec 26 Javascript
jquery 中ajax执行的优先级
Jun 22 Javascript
jQuery实现用户输入自动完成功能
Feb 13 Javascript
[js高手之路]原型式继承与寄生式继承详解
Aug 28 Javascript
vue数据传递--我有特殊的实现技巧
Mar 20 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
Aug 27 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
Aug 31 Javascript
JS开发常用工具函数(小结)
Jul 04 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
May 23 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下批量挂马和批量清马代码
2011/02/27 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
prototype 的说明 js类
2006/09/07 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
Python单例模式实例分析
2015/01/14 Python
详解Python如何获取列表(List)的中位数
2016/08/12 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
如何清空Session
2015/02/23 面试题
销售业务实习自我鉴定
2013/09/23 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android