位置: 编程技术 - 正文

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)

  • 运输公司轮胎如何做会计分录
  • 印花税是根据销售额提吗
  • 个税APP如何修改密码
  • 房地产中心
  • 共用的水电费支出怎么算
  • 变更企业性质企业怎么办
  • etc设备有区别吗
  • 租金收入摊销
  • 第三方代缴社保能查到原单位吗
  • 无票销售纳税后怎么处理
  • 房产税计税依据房产原值怎么算
  • 出租车公司给车都上什么保险
  • 税金及附加与期间费用区别
  • 增值税普通发票需要交税吗
  • 买车交税怎么算价格
  • 一般纳税人证明在哪里打印
  • 新租赁准则承租人进项税
  • 企业发放给员工子女抚养费
  • 哪些项目可以享受简易征收
  • 未到期责任准备金属于什么科目
  • 大中小型企业标准划分表
  • 新购进的固定资产可以一次性抵扣
  • 资源费用怎么算
  • 实收资本是否可以更改
  • 企业银行基本户
  • 劳务报酬交的税汇算清缴能退
  • 进项税借方有余额要怎么处理
  • 按揭购入固定资产怎么算
  • 房租押金未全额缴纳
  • Intel 酷睿i5 8300H
  • 合伙企业股东个税税率表
  • 其它业务收入是什么科目
  • 无形资产摊销时点
  • 房屋租赁费如何结转成本
  • lmgrd.exe是什么进程
  • php数据库语句
  • 企业购进商品取得的现金折扣
  • sysmon安装
  • 企业购买银行理财
  • 增值税已认证抵扣
  • 华为od机试无法测用例
  • vue前端怎么运行
  • 小企业发票打印流程
  • 销售建材行业
  • 进项税抵增值税
  • python统计出现次数并排序
  • vue3+ts+MicroApp实战教程
  • 公司向个人借款怎么做账
  • 个税是指怎样的税金
  • 租厂房需要办环评注意事项
  • 申请个税退税账号是什么
  • 职工教育经费如何列支
  • 其他流动资产为什么包括应交增值税
  • 在长期股权投资中,如何理解控制、重大影响?
  • 记账凭证原始凭证回单的粘贴顺序
  • 稽查人员是干嘛的
  • 简述账套管理的主要内容
  • 工业企业外购材料物资的成本包括
  • windowsserver2008密码规则
  • linux常用命令sed
  • keyworker什么意思
  • win7怎么禁止系统自动更新
  • mac安全设置在哪里
  • adsl怎么设置上网
  • 手机更新升级版本下载
  • window10外接摄像头怎么启用
  • html5+javascript实现简单上传的注意细节
  • 转换目录的命令
  • 九宫寓意和象征
  • javascript用处
  • JavaScript window.setTimeout() 的详细用法
  • jquery如何加背景图片
  • js 编程
  • Android音乐播放器评论功能怎么实现
  • python魔法方法有啥用
  • js register
  • 税务注销相关文件
  • 上海个体工商户怎么报税
  • 企业资金运转资金投放
  • 环保标识码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设