位置: 编程技术 - 正文

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)

  • 二手车经纪公司和中介的区别
  • 居间费用如何纳税
  • 一键报税财务软件破解版
  • 新车车船税怎么交
  • 动迁补偿款怎么算
  • 减免的养老保险怎么走账
  • 出口货物发生退运是征税还是免税
  • 无形资产的摊销会计科目
  • 资产负债表所有者权益和利润表关系
  • 社保局的员工是公务员吗
  • 季度所得税申报错误,一定要更改吗
  • 抵扣联多长时间的勾选认证
  • 资产损失企业所得税扣除
  • 公司如何开现金支票给个人
  • 销售免税药品要进项税额转出吗
  • 利息股息红利所得
  • 本月支付上月运费
  • 资产已报废折旧怎么计算
  • 公户收到的款都要确定收入吗
  • 淘宝的电子发票怎么看
  • 建筑劳务公司开发票
  • 招大学生做兼职的网站
  • 车船使用税计缴标准
  • 开红字专用发票记账时摘要怎样写?
  • 为什么Windows 7搜不到网
  • 分公司与总公司的关系
  • 如何查看自己的qq密码
  • 免抵退税怎么做账
  • 财务变更是什么意思
  • 预付款发票不能回来了怎么处理
  • 北极野生动物
  • css加载是异步的吗
  • 免交的增值税要交所得税吗
  • 以前年度损益调整
  • vscode插件vuter
  • 办理组织机构代码证需要什么材料
  • css选择器nth
  • 狗能看懂的电视
  • 10年未被强制修复!黑客利用Windows旧漏洞攻击通信公司并分发恶意文件
  • PHP mysqli_free_result()与mysqli_fetch_array()函数详解
  • 微服务框架图
  • 城建税5%的是什么情况
  • 纳税人异地预缴所得税
  • 公司电脑配件也要交税吗
  • dedecms采集怎么用
  • mongodb快速入门
  • 织梦一直显示上一页和下一页
  • 购入已提足折旧的固定资产账务处理
  • 合伙人退伙后对退伙后的债务承担责任吗
  • 出租车票做什么科目
  • 增值税留抵扣额
  • 施工仪器的主要类别
  • 合并企业如何缴纳印花税
  • 无票销售纳税后怎么处理
  • 外商投资企业的中国投资者
  • 税务开票系统如何设置不用重复登录
  • 企业红包是什么骗局吗
  • 公司银行开户的一些资料是公司办公室保存还是财务保存
  • 生育津贴与员工有关吗
  • 固定资产一次性扣除账务处理
  • 建账怎么建
  • 会计从业资格证取消了吗
  • SQL Server在AlwaysOn中使用内存表的“踩坑”记录
  • mysql的基本介绍
  • winxp系统开机启动项
  • fedora linux安装教程
  • VMware虚拟机中卸载java命令
  • linux 禁用root
  • Win7 64位摄像头驱动显示黄色感叹号无法使用的解决方法
  • 怎样关闭windows10安全中心
  • win10桌面图标无法正常显示
  • win8怎么看电脑wifi密码
  • opengl混合模式
  • jquery手机插件
  • node.js怎么搭建服务器
  • shell命令读取文件并新增另一文件到指定行
  • python中的
  • Python使用QQ邮箱发送Email的方法实例
  • 成品油和非成品油的税务知识
  • 2023居民医保怎么交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设