位置: 编程技术 - 正文

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)

  • 招待费增值税税率
  • 企业所得税的会计处理
  • 上月有留抵税额本月怎么申报
  • 食品增值税发票需要交税吗
  • 小微企业增值税优惠政策最新2023
  • 附加税减半征收政策从什么时候开始
  • 建设工程未交付什么意思
  • 租赁房屋增值税
  • 企业固定资产折旧当月增加当月计提吗
  • 进口增值税的计税依据
  • 财政补贴金额
  • 付款时没有发票怎么做账
  • 简易分包抵减的增值税应纳税额怎么做会计分录?
  • 研发支出是什么性质的科目
  • 机器设备的损耗属于什么会计科目类别
  • 公司不收员工的个人所得税怎么处理?
  • 分包业务的账务处理办法
  • 有限合伙企业需要承担无限连带责任吗
  • 合理损耗如何计算单价?
  • 商业土地厂房办公房过户需要交什么税?
  • 所有者权益合计是负数是什么意思
  • 收到快递关税做什么科目
  • 附加税有哪些税种
  • 经营费用与营业收入区别
  • 估计退货的会计分录
  • 纳税调整需要调年度报表嘛
  • php访问统计
  • 广告费与业务宣传费范围
  • aliapp.exe是什么意思
  • php设计思路
  • 企业所得税税前扣除凭证管理办法
  • 非正常损失会计利润调整
  • 微信小程序四人游戏
  • SpringBoot + Vue基本知识点荟萃
  • framework 4 client profile 不动
  • 民间非营利组织会计制度
  • 收入凭证填写
  • php点击跳转
  • js鼠标事件包括哪几种
  • php获取指定日期的星期几的方法是
  • 基于网络创新形成的大数据的最突出特征是什么?( )
  • 赔偿款收据样本
  • 增值税与消费税中关于包装物押金规定的异同点
  • 门店有营业执照仓库加工要办营业执照
  • 帝国cms首页怎么打开
  • 3步搞定纯真ip数量
  • 怎么查询mysql sql_mode
  • 代发工资需要缴税吗
  • 资产类备抵科目借方表示
  • 劳务费与应付职工薪酬的区别
  • 货先到发票后到怎么办
  • 房租收不回来会计分录
  • 会计的三个结转是什么
  • 总部结算什么意思
  • 营业外支出如何做账
  • mysql行锁的作用
  • sqlserver exists,not exists的用法
  • mysql “ Every derived table must have its own alias”出现错误解决办法
  • 多屏协同苹果系统有吗
  • 邮件版本
  • linux安装php7.3
  • 微软称十年内将淘汰程序员
  • window10如何修改电脑名称
  • linux保存配置文件
  • win81with update
  • 微软输入法拼音
  • android study
  • express.js教程
  • 安卓键盘软件
  • android 简历模板
  • python迭代器iterator
  • 如何判断python列表长度
  • 怎么查询个人所得税申报成功
  • 电子税务局申报截止日期
  • 重庆国税电子税务局手机版
  • 增值电信发票
  • 地税局刚进去工资多少
  • 岗位能手竞赛
  • 上海嘉定南翔房子
  • 给税务局说明怎写
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设