位置: 编程技术 - 正文

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)

  • 税友的财务软件叫什么
  • 租赁房屋怎么写合同
  • 资产处置损益影响所有者权益总额吗
  • 分公司承担总公司差旅
  • 现流表怎么编
  • 邀请客户参加公司会议
  • 同一控制下资产收购
  • 收取不合规发票怎么处理
  • 有形净资产负债率怎么计算
  • 耕地转让权是什么意思
  • 从农民合作社取得的普通发票可以抵扣吗
  • 新税法下广告费和业务宣传费的扣除是怎样?
  • 全国统一吗?
  • 我国流转税的税种组成为
  • 固定资产当月入账下月计提折旧
  • 原材料保险公司赔偿会计分录怎么写
  • 质量保证金的预留比例是多少
  • 纳税调整后所得怎么算
  • 电子发票开错怎么办
  • 简易计税 增值税专用发票
  • 工程发票没写经办人没写可以吗
  • 减免的土地出让金销项税额可以抵减吗
  • 总分公司、母子公司:三流不一致情况下,如何抵扣增值税?
  • 企业的其他业务收入有
  • 做买卖交税
  • 会计中的贷款核算分录是什么?
  • windows10如何关闭杀毒软件
  • 新办企业税务服务
  • 科技服务业是怎么分类的
  • 电脑上加速网页的加速器
  • linux如何使用
  • PHP编程中的__clone()方法使用详解
  • win10怎么清理剪切板
  • hipsdaemon.exe是什么
  • php get函数
  • 黄石国家公园的占地面积
  • 会计科目结构什么意思
  • 初级职称到中级职称需要上继续教育课吗
  • yolov4配置
  • 怎么做应收应付账款分录
  • 没进项发票怎么办
  • 物业公司收的水费是计入其他应付款还是其他业务收入
  • sqlserver数据表在哪里
  • 一般纳税人增值税可以抵扣吗
  • 收到个人所得税手续费返还增值税税率
  • 企业从银行借款会导致其营运资本
  • 纳税信用等级区别在哪
  • 公司优秀党员奖章
  • mysql异常退出
  • 安装购买的材料怎么做账
  • 利息收入管理办法
  • 未取得发票的费用所得税汇算调增,该填哪里呢?
  • 住宿发票遗失怎么办
  • 报表其他应收款包括哪些内容
  • 税费的审计
  • 个税起征点调整最新消息
  • 分配股利有几种形式
  • 国际货运公司支付境外运费
  • 公司购买防疫物资的申请
  • 请演员的费用账务处理
  • 收银员长款短款什么意思
  • 职工外地就医怎么报销
  • 到期不付款跟客户怎么说
  • 服装店的财务会计怎么做
  • sql server2008启动
  • ubuntu文本编辑器命令
  • ubuntu怎么设置网络连接
  • win7如何运行命令
  • win8windows设置在哪里
  • 怎么学linux
  • win8.1怎么关闭更新
  • unity3ds
  • unity3d官方教程
  • 封装好的中药能带上飞机吗
  • Android系统启动负载均衡
  • python环境及基础语法
  • 北京税务总局
  • 税控盘税务数字书驱动找不到应用程序是咋回事
  • 个人外汇收入申报
  • 人工智能在税务领域应用中的风险与规制
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设