位置: 编程技术 - 正文

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以下的收据可以入账吗
  • 建筑类企业是否允许留抵
  • 资产项目有
  • 建设工程未交付什么意思
  • 政府搬迁补偿款记资本公积
  • 丢失海关专用缴款书后该怎么处理其相关会计分录
  • 国外出差差旅费
  • 管理人员的奖惩制度
  • 工程外出经营流程
  • 施工单位对分包单位能罚款吗
  • 待摊费用跨年冲销如何入账?
  • 当月发票入库核销怎么算
  • 没有订立合同的著作权属于什么人
  • 营改增后新开公司如何报地税?
  • 增值税进项和销项税的计算方法
  • 企业所得税固定资产一次性扣除
  • 接受无形资产投资进项税
  • 同一个单位,应收应付都有,怎么调账
  • 发票代码不是10位,怎么提示输入12位的
  • 公司净资产怎么算的
  • 京挑客怎么赚钱
  • 成品油电子普通发票开错了
  • 河道管理费入什么科目
  • 工程施工直接费用包括哪些
  • 月末增值税怎么计算
  • 新开的公司会计需要做什么
  • 自然报废产生的固定资产净损失计入什么科目
  • 英雄联盟登录失效怎么回事
  • mac怎么设置快捷图标
  • php开发的优点与不足
  • schupd.exe - schupd是什么进程 有什么用
  • win7系统不可用怎么办
  • 退回多缴的所得税怎么算
  • CI(Codeigniter)的Setting增强配置类实例
  • 商品进销差价的作用
  • 企业所得税股息红利所得来源地
  • btrfs 读取
  • 微信网页授权管理在哪里
  • 企业年度预算编制流程
  • 银行本票和汇票的定义
  • 应付暂估账务处理
  • phpcms api
  • 什么是服务型
  • 增值税申报表第18栏怎么来的
  • 权益法下公允价值变动计入其他综合收益
  • 经营性罚款和行政性罚款的区别
  • 未认证和未抵扣的区别
  • 工会经费是按应付职工薪酬贷方计提吗
  • 购买预付卡如何开发票
  • 收入费用会计分录
  • 融资租入固定资产的租赁费属于什么费用
  • 发票金额与付款金额不一致情况说明
  • 公司分期付款买车怎么抵税
  • 支付平台费率
  • 单位伙房费用管理制度
  • 企业进出口总额
  • 税前扣除项目主要包括
  • 电费发票应收电费怎么开
  • 生产成本和主营业务收入的关系
  • 账实不符怎么调账
  • sql server减法
  • win10新预览版
  • win7无法正常关机
  • win7旗舰版如何升级到win10
  • Win10控制面板打不开
  • win8如何使用
  • linux bzz
  • 启用win8 metro启动界面
  • JavaScript中的数据类型分哪为两大类?
  • jQuery实现Select左右复制移动内容
  • 在jquery中fadein
  • android设计模式书籍
  • 湖北税务局2021新通知
  • 国家税务局总局黑龙江分局
  • 辽宁省国家税务局官网
  • 润泽一词出自哪里
  • 企业党支部怎么称呼
  • 焦作国税局官网
  • 朝阳银行作息时间
  • 泉州市税务局投诉电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设