有如下二叉树

 遍历:

// 前序遍历, head-left-rightfunction HLR (tree) {const stack = [], res = []if (tree) stack.push(tree)while (stack.length) {const cur = stack.pop()res.push(cur.val)// 栈先入后出,所以要先放入rightcur.right && stack.push(cur.right)cur.left && stack.push(cur.left)}return res}// 中续遍历, left-head-rightfunction LHR (tree) {const stack = [], res = []let root = treewhile (true) {while (root) {stack.push(root)root = root.left}if (stack.length === 0) breakconst cur = stack.pop()res.push(cur.val)root = cur.right}return res}// 后续遍历, left-right-headfunction LRH (tree) {const stack = [], res = []if (tree) stack.push(tree)while (stack.length) {const cur = stack.pop()res.push(cur.val)cur.left && stack.push(cur.left)cur.right && stack.push(cur.right)}return res.reverse()}// 层次遍历function order (tree) {const queue = [], res = []if (tree) queue.push(tree)while (queue.length) {const cur = queue.shift()res.push(cur.val)cur.left && queue.push(cur.left)cur.right && queue.push(cur.right)}return res}console.log('前序遍历:', HLR(tree));console.log('中序遍历:', LHR(tree));console.log('后序遍历:', LRH(tree));console.log('层次遍历:', order(tree));

结果:

二叉树的前、中、后、层次非递归遍历(js)相关推荐

  1. 数据结构之二叉树的前中后序遍历以及层序遍历

    学习目标:读完这篇博客搞定二叉树的前中后序以及层序遍历 首先:你应该明白什么是二叉树,下面这幅图就是一个完全二叉树 其实所谓的二叉树就是一个节点有小于等于二个分支的树,可以没有分支,可以有1条分支,可 ...

  2. 转载:二叉树的前中后和层序遍历详细图解(递归和非递归写法)

    二叉树的前中后和层序遍历详细图解(递归和非递归写法) Monster_ii 2018-08-27 17:01:53 50530 收藏 403 分类专栏: 数据结构拾遗 文章标签: 二叉树 前序 中序 ...

  3. 二叉树的前、中、后的非递归遍历

    题目 实现一个链式存储的二叉树,采用非递归的形式,按照前.中.后序的顺序遍历二叉树. 代码 /** * 二叉树的前.中.后序的非递归遍历 **/#include <iostream> us ...

  4. 二叉树的前序,中序,后续(非递归版本)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.前序 二.后序 三.中序 总结 前言 二叉树的非递归版本的前序中序后序在面试中也经常考,必须熟练掌握! 下面将会讲 ...

  5. 二叉树的前,中,后序遍历(思路分析) [Java][数据结构]

    二叉树的前,中,后序遍历(思路分析) 前序遍历: 先输出父节点, 再遍历左子树和右子树 中序遍历: 先遍历左子树, 再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 ...

  6. 深入理解二叉树的前中后序

    一.问题 二叉树的前中后序遍历到底是什么,仅仅是三个顺序不同的 List 吗?为什么多叉树没有中序遍历? 二.遍历框架 所谓二叉树遍历是按某种特定规则,依次对二叉树中的节点进行相应的操作,并且每个节点 ...

  7. 二叉树 迭代 前 中 后_如何在Ruby中使用数组迭代计算二叉树的高度

    二叉树 迭代 前 中 后 Data structures and algorithms are the heart and soul of computer science and software. ...

  8. 二叉树的后序非递归遍历(巧妙思想)

    大家都知道二叉树的前序非递归遍历非常好写: //二叉树的结构 public class TreeNode {TreeNode left;TreeNode right;int val;TreeNode( ...

  9. Java二叉树的前中后序遍历

    Java二叉树的前中后序遍历 1.前序遍历 1.1前序遍历概念 1.2前序遍历习题 2.中序遍历 2.1中序遍历概念 2.2中序遍历习题 3.后续遍历 3.1后序遍历概念 3.2后序遍历习题 大家好, ...

最新文章

  1. 160个Crackme016
  2. echo怎么把日志清空_电脑越来越卡到底怎么办?一分钟教你释放C盘空间,瞬间提速5倍...
  3. STL源码剖析(侯捷)笔记——STL概述
  4. matlab怎么编写风雨荷载时程,风雨荷载作用下输电塔动力响应分析
  5. Android控件——HorizontalScrollView使用(一)
  6. deepin有线网卡无法连接网络
  7. jquery 报错提示Uncaught TypeError: $ is not a function
  8. 在 Amazon SageMaker 上玩转 Stable Diffusion: 基于 Dreambooth 的模型微调
  9. 搞计算机的真的不配拥有爱情吗。这是她给我留下的最后一段话
  10. 找工作经验分享贴——硬件岗求职历程
  11. 【附源码】Python计算机毕业设计社区志愿者管理系统
  12. Android系统根目录下的各个文件夹的作用与区别介绍
  13. 网络协议 11 - Socket 编程(下)
  14. 【转】最容易理解的对卷积(convolution)的解释
  15. GrowingIO 数据采集 iOS SDK 测试实践
  16. 把生活过成 你想要的样子
  17. Azure: Azure AD(For Development)的使用
  18. 植物大战僵尸2android最新版,手机植物大战僵尸2高清版下载官方-植物大战僵尸2高清版 安卓版v2.4.8-PC6手游网...
  19. windows 环境下,可执行 exe 文件和 .dll 文件在不同目录下的处理办法
  20. gperftools安装和使用

热门文章

  1. 3D建模可以做什么工作呢
  2. vb计算机运算符号优先级,vb运算符的运算顺序是什么
  3. txt文本字数统计和出现字数的排序(西游记.txt)
  4. 计算机英语和公共英语的区别和联系,公共英语(PETS)与大学英语四级(CET)的区别和联系...
  5. 数据库中length的用法
  6. PC安装CentOS 7.0问题
  7. 如何在UNIAPP里发送网络请求 #在axios里内嵌request的大聪明前来填坑
  8. 且看中端手机市场近身厮杀,谁将获胜?
  9. Simply JavaScript
  10. MTSC2020 | 手淘AIOPS实战-消息全链路智能监控