位置: 编程技术 - 正文

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)

  • 工程款税率是多少专票
  • 公司缴税怎么计算的
  • 个体工商户营业执照需要什么材料
  • 运输发票抵扣联丢了
  • 不入库的商品怎么做分录
  • 粗纤维测定仪使用方法
  • 税局函调准备哪些资料
  • 税控盘上报
  • 信用减值损失贷方
  • 车购税申报表如何作废重开
  • 存货取得的分录
  • 物业公司开场地租赁费发票编码
  • 提取备用金如何在退回公司
  • 建筑行业未收款先开发票如何做账?
  • 出售房屋缴纳的印花税
  • 企业招待客户的费用
  • 简易计税在借方还是贷方
  • 开办费转入管理费用分录
  • 增值税普通发票有什么用
  • 公司没有员工怎么零申报
  • 工资薪金总额是指月还是全年
  • 暂估成本冲回之后成本变为负的
  • 企业所得税一般是几个点
  • 简易征收企业所得税几个点
  • 税收法定原则的意义
  • 专票只能开一万的额度开了三万的发票
  • 核定征收的小规模企业优惠
  • 员工住院押金会计处理
  • 房产税有哪些种类
  • 纳税调整需要调年度报表嘛
  • win7有线连接怎么设置
  • windows 11预览版
  • 商贸企业小规模转一般纳税人条件
  • 包装物押金收入计入收入总额吗
  • 其他应付款不需要支付的怎么处理,预算会计
  • 会计账簿的错账怎么办
  • iframe frame
  • 购买免税农产品的会计分录
  • 冰川国家公园在哪
  • 库存股属于什么
  • 租赁公司的
  • anconda虚拟环境路径
  • 其他收益在资产负债表哪点
  • 表单验证用什么方法实现
  • js获取各种屏幕信息
  • HttpServletRequest 获取参数
  • php如何入门
  • 汽车年审检测费收费标准
  • 个税申报漏报人怎么办
  • python 函数的返回值
  • python generation
  • 劳务派遣公司必须有劳务派遣证吗
  • 建筑公司是可以开在住宅小区吗
  • 投资管理公司怎么收费
  • 员工垫付的费用没有发票,放在工资里可以吗
  • 有限公司股权转让需要股东会决议吗
  • 预缴的增值税及附加税怎么做账
  • 原始股卖出需要缴税吗
  • 公司为员工异地缴纳五险一金
  • 自产自销免税发票可以抵税吗
  • 收到增值税专用发票是进项还是销项
  • 行政事业单位会计风险来源于日常的会计活动
  • 可转债公允价值变动计入
  • 销售收入用营业收入还是营业总收入
  • 研发支出资本化支出在资产负债表哪里体现
  • 伤病假条
  • ubuntu20.04忘记root密码
  • mac安装软件提示无法检查更新
  • 电脑开机显示xp后无反应
  • 怎么看win8.1的版本
  • linux在实际工作中的应用
  • perl中use的用法
  • 微信小程序模板框架
  • js计算时间差毫秒
  • java scripts
  • unity3d怎么查看
  • [小权~编码路&Android] BroadcastReceiver应用详解
  • js如何获取cookie的值
  • javascript零基础入门
  • 上海税务培训中心
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设