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有关元素内容操作小结
Dec 20 Javascript
运算符&amp;&amp;的三个不同层次
Apr 07 Javascript
javascript阻止scroll事件多次执行的思路及实现
Nov 08 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
Apr 29 Javascript
javascript之Array 数组对象详解
Jun 07 Javascript
JS中setTimeout和setInterval的最大延时值详解
Feb 13 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
jQuery+PHP+Mysql实现抽奖程序
Apr 12 jQuery
微信小程序中input标签详解及简单实例
May 18 Javascript
JavaScript进阶(三)闭包原理与用法详解
May 09 Javascript
解决Vue大括号字符换行踩的坑
Nov 09 Javascript
浅析vue中的nextTick
Dec 28 Vue.js
详述 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 404错误页面实现代码
2009/06/22 PHP
超级实用的7个PHP代码片段分享
2012/01/05 PHP
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
php计算税后工资的方法
2015/07/28 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
Python中操作符重载用法分析
2016/04/29 Python
windows下python安装pip图文教程
2018/05/25 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
电气自动化大学生求职信
2013/10/16 职场文书
人力资源管理专业学生自我评价
2013/11/20 职场文书
军训 自我鉴定
2014/02/03 职场文书
超市商业计划书
2014/05/04 职场文书
尊师重教演讲稿
2014/09/04 职场文书
工伤事故证明
2014/10/20 职场文书
英文道歉信
2015/01/20 职场文书
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers