位置: 编程技术 - 正文

JS中的二叉树遍历详解(js实现二叉查找树)

编辑:rootadmin

推荐整理分享JS中的二叉树遍历详解(js实现二叉查找树),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js二叉树遍历,js二叉树层次遍历,二叉树遍历java,js实现二叉树数据结构,js二叉树遍历,js二叉树遍历方法,js二叉树遍历方法,js二叉树遍历方法,内容如对您有帮助,希望把文章链接给更多的朋友!

二叉树是由根节点,左子树,右子树组成,左子树和友子树分别是一个二叉树。这篇文章主要在JS中实现二叉树的遍历。

一个二叉树的例子

广度优先遍历广度优先遍历是从二叉树的第一层(根结点)开始,自上至下逐层遍历;在同一层中,按照从左到右的顺序对结点逐一访问。实现:<!--more-->使用数组模拟队列。首先将根节点归入队列。当队列不为空的时候,执行循环:取出队列的一个节点,如果该结点的左子树为非空,则将该结点的左子树入队列;如果该结点的右子树为非空,则将该结点的右子树入队列。(描述有点不清楚,直接看代码吧。)

递归遍历觉得用这几个字母表示递归遍历的三种方法不错:D:访问根结点,L:遍历根结点的左子树,R:遍历根结点的右子树。先序遍历:DLR中序遍历:LDR后序遍历:LRD顺着字母表示的意思念下来就是遍历的顺序了 ^ ^

这3种遍历都属于递归遍历,或者说深度优先遍历(Depth-First Search,DFS),因为它总是优先往深处访问。

先序遍历的递归算法:

JS中的二叉树遍历详解(js实现二叉查找树)

中序遍历的递归算法:

后序遍历的递归算法:

非递归深度优先遍历其实对于这些概念谁是属于谁的我也搞不太清楚。有的书里将二叉树的遍历只讲了上面三种递归遍历。有的分广度优先遍历和深度优先遍历两种,把递归遍历都分入深度遍历当中;有的分递归遍历和非递归遍历两种,非递归遍历里包括广度优先遍历和下面这种遍历。个人觉得怎么分其实并不重要,掌握方法和用途就好 :)

刚刚在广度优先遍历中使用的是队列,相应的,在这种不递归的深度优先遍历中我们使用栈。在JS中还是使用一个数组来模拟它。这里只说先序的:额,我尝试了描述这个算法,然而并描述不清楚,按照代码走一边你就懂了。

看了这一篇,找到了非递归后序的算法,所以在这里把非递归的遍历方法补充完整。非递归中序先把数的左节点推入栈,然后取出,再推右节点。

非递归后序(使用一个栈)这里使用了一个临时变量记录上次入栈/出栈的节点。思路是先把根节点和左树推入栈,然后取出左树,再推入右树,取出,最后取跟节点。

非递归后序(使用两个栈)这个算法的思路和上面那个差不多,s1有点像一个临时变量。

Morris遍历这个方法即不用递归也不用栈实现三种深度遍历,空间复杂度为O(1)(这个概念我也不是特别清楚org)(这三种算法我先放着,有空再研究)Morris先序:

Morris中序:

Morris后序:

标签: js实现二叉查找树

本文链接地址:https://www.jiuchutong.com/biancheng/377434.html 转载请保留说明!

上一篇:简述JavaScript提交表单的方式 (Using JavaScript Submit Form)(简述javascript的作用)

下一篇:基于javascript显示当前时间以及倒计时功能(javascript definitive guide)

  • 总额法和净额法会计分录对比
  • 开票系统怎么切换到数字账户
  • 文化建设税是含税价吗
  • 小规模纳税人可以开1%的专票吗
  • 深圳增值税发票选择确认平台使用
  • 会计凭证填制错误怎么办
  • 小规模纳税人个税申报时间
  • 消防设施安装费包括哪些
  • 社保岗位补贴条件
  • 跨年发票作废时间有限制吗
  • 外购的半成品属于原材料吗
  • 销售时无法确认发票
  • 公司每年都要纳税吗?
  • 统计应交增值税怎么算
  • 营改增后取得土地转让
  • 财税2009年59号解读
  • 股权转让印花税税率
  • 国税2017年16号文
  • 一个项目可以有几个单位工程
  • 销售蔬菜水果需要什么证件
  • 烟草企业发生的广告和宣传费在当年营业收入15
  • 双倍余额折旧法
  • 企业的对公支出是什么
  • 事业单位固定基金属于什么科目
  • 2020年餐饮行业免税政策
  • 公司工资分两次发放算逃税吗
  • 计提职工教育经费计入什么科目
  • 建筑业销项税和进项税计算
  • win10自动关机方法
  • 经销商计提折扣怎么算
  • 招待客户住宿的句子
  • 退回多缴所得税做贷方本期发生额没有
  • 怎么做外资企业赚钱
  • “Ninja is required to load C++ extensions”解决方案
  • php调用其他php函数
  • 怎么配置opencv
  • php 提交表单
  • 协会会费怎么使用
  • 环境检测费计入什么费用
  • 房产置换怎么做账务处理
  • 员工宿舍的物业费能否抵扣
  • 差旅费报销会计凭证
  • 一般纳税人废业企业库存怎么办
  • 增值税发票如何作废流程
  • 个体商户个人所得税怎么算
  • 购买税盘怎么减免申报
  • 商业承兑汇票贴现什么意思
  • 撰写广告
  • 其他应付款辅助是供应商还是客户
  • 开了发票不做收入的账务处理是?
  • 解决问题
  • 抵扣联过期时间
  • 事业单位收到财政拨款会计分录
  • 物业公司劳务外包
  • 车辆按揭利息财务怎么算
  • 公司突然改变工资结构
  • 河道管理费是附加税吗
  • 4s店收到红字发票怎么开
  • 城镇土地税需要计税吗
  • 红字信息表开错了对方已开发票怎么处理
  • 暂估的费用次年调增怎么做会计分录
  • 劳务派遣人员能有营业执照吗
  • ubuntu安装教程14.04
  • vmware虚拟机怎么卸载不了
  • mac怎么设置开机默认windows
  • linux网络不可达是什么原因
  • centos怎么打开软件
  • win7开机假死
  • 编程javascript
  • node session
  • Node.js中的construct构造函数
  • node一次执行多个文件
  • dw中css规则定义中文
  • nodejs基础知识
  • javascript基于什么的语言
  • node ffi
  • Jquery实现$.fn.extend和$.extend函数
  • jquery通过id赋值
  • 东城国税局局长
  • 工会开票要求
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设