位置: 编程技术 - 正文

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)

  • 注册资本印花税减半征收政策
  • 中国注册税务师协会官网
  • 企业对外投资收益税收
  • 小规模发票冲红怎么申报
  • 持续经营净利润率怎么算
  • 违反账簿、凭证管理要承担什么法律责任
  • 支付宝怎么开个人增值税发票
  • 企业所得税的营业成本怎么算
  • 已经发生的费用
  • 超过标准的职工教育经费
  • 已付款未收到发票怎么做分录
  • 微信支付的钱到哪里去了
  • 房屋租赁合同印花
  • 销项发票遗失怎么办
  • 电话费发票可以重新开吗
  • 公休假补贴多少钱
  • 视同销售行为销项税额该怎么核算
  • 内账和外账会计哪个简单
  • 研发产品样品对我出售账务处理
  • 未确认收入的增值税怎么记账
  • 支付境外咨询费代扣代缴增值税
  • 发票 发票联
  • 专票可以当普票用不抵扣吗
  • 服务,不动产和无形资产扣除项目明细
  • 暂时性差异的转回期间如何确定
  • 进口货物可以退回吗
  • 农产品进项税额怎么计算
  • 电脑每次开机都要选择系统怎么办
  • 红字专用发票是红色的吗
  • jdk1.8环境变量设置
  • PasSrv.exe - PasSrv是什么进程 有什么用
  • 国产设备投资抵免企业所得税
  • 高温费做账
  • php中关键字修饰属性是什么
  • 银行汇票属于银行存款吗
  • 前端后端选择
  • 长期应收款属于流动资产吗
  • 本期销售的单位成本怎么算
  • 实际缴纳消费税计算公式
  • uniapp 打开小程序
  • redis 缓存框架
  • css中的hover属性
  • php如何上传文件
  • mysql binlog是什么
  • 收到专票怎么入账
  • 只有发票没有银行怎么办
  • 如何隐藏应用软件华为
  • 金税盘发票作废失败09D13D
  • 企业发行债券的交易费用计入
  • 其他货币资金的明细科目有哪些
  • 资产负债表怎么算
  • 企业所得税季度预缴纳税申报表
  • 其他应收款财务报表取数
  • 税控盘维护费280账务处理
  • 企业所得税季度申报表季度平均值
  • 成本法和权益法的相同点
  • 包装物的账务处理例题
  • 生产成本人工费结转
  • 固定资产在以后会计期间可以转回吗
  • 废料卖出算哪种收入
  • 小企业会计准则调整以前年度费用分录
  • 稳岗补贴会计分录怎么做,需要缴纳企业所得税不
  • mysql基础概念
  • sqlserver2000删除注册表
  • docker安装使用
  • 快速调用cmd
  • win8系统打不开设置
  • mssqlserver安装
  • win8搜索程序和文件在哪里
  • pc guide
  • win7系统怎么设置屏保图片
  • macbook core2
  • windows10预览
  • [置顶] [寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers)
  • Android从零单排02_Eclipse搭建Android环境01
  • javascript中attribute和property的区别详解
  • 序列化和反序列化是什么意思
  • 弹簧设计软件手机版
  • 云阅卷查询成绩登录入口
  • 进口酒类税收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设