位置: 编程技术 - 正文

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)

  • 所得税会计与财务会计比较研究
  • 个税退回怎么申请
  • 土地摊销全部计入成本吗
  • 会计做账借贷怎么做
  • 发票勾选平台怎么导出未勾选的发票
  • 总产值和主营业务收入
  • 增值税专用发票几个点
  • 税控盘会计处理
  • 运输费可以和货款合并开票吗
  • 收到认缴实收资本怎么做账务处理?
  • 减半征收怎么算
  • 自创商誉企业所得税可以扣除吗
  • 企业收到税务局退税分录
  • 城建税和教育费附加计入什么科目
  • 季报所得税可以预交吗
  • 需要预缴增值税
  • 发票一定要房东开的才能报销吗?
  • 税务的电子钥匙是干嘛的
  • 案例分析关于团员青年的思想困惑疏导和成长问题释疑
  • 劳务派遣公司怎么赚钱
  • 企业缴纳印花税会计分录
  • 小规模纳税人含500万吗
  • 个人非货币性资产投资个人所得税
  • 中央空调销售与安装开票税率
  • 退货应该怎么记账
  • 在路由器设置中怎么设置
  • php字符串变量
  • 超市收取进场费违反什么法律
  • 职工薪酬可能计入什么科目
  • 增值税留抵退税政策2023
  • 融资租入的设备为什么属于资产
  • 转让子公司产生的投资收益在合并层面是不是全部抵消
  • 广告费列支
  • High-resolution image reconstruction with latent diffusion models from human brain activity
  • FPN细节剖析以及pytorch代码实现
  • php读取大文件的内容
  • 公司租赁个人车辆怎么开发票
  • 如果企业一直亏损不交所得税会被税局稽查吗
  • 增值税进项税加计抵减
  • 个体户怎么报增值税
  • 库存周转率会大于1吗
  • 转账错误被退款怎么处理
  • 汽车折旧年限是几年内的
  • 有净残值的固定资产累计折旧怎么算
  • 为什么出台农产品质量安全法
  • 个体升一般纳税人的界限
  • 注册公司时的注册资金认缴是什么意思
  • 利润敏感性分析法可以帮助企业有哪些决策?
  • 进口代理费取费标准
  • 资金退回怎么记账
  • 投资软件和信息技术服务业
  • 公司给员工转公司
  • 自产的产品用于生产缴纳增值税
  • 销售费用的主要科目
  • 专利年费计入什么科目没有研发费用
  • 工会经费计提比例0.8%和2%有何区别
  • 销项税小于进项税怎么结转
  • 购买金税盘取得的发票
  • 小规模企业所得税优惠政策最新2023
  • 会计核算的主要环节
  • 建账的基本原则是什么
  • 私营公司无形资产怎么算
  • 懒癌患者如何自救
  • win7防病毒设置在哪
  • centos7yum
  • win7怎么禁止网络连接
  • 通知栏图标怎么变小
  • linux命令删除指定目录
  • win7旗舰版怎么连接无线网络
  • cocos2dx schedule
  • opengl 输入框
  • centos6升级到centos8
  • 设计模式具有的优点
  • linux查看shell脚本
  • python所有语句
  • 电子税务局税务数字证书登录
  • 湖北税务发票查询系统网
  • 纳税申报期限2023
  • 辽宁社保缴费公众号
  • 季度申报成功与否怎么查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设