二叉树的前、中、后、层次非递归遍历(js)
有如下二叉树
遍历:
// 前序遍历, 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条分支,可 ...
- 转载:二叉树的前中后和层序遍历详细图解(递归和非递归写法)
二叉树的前中后和层序遍历详细图解(递归和非递归写法) Monster_ii 2018-08-27 17:01:53 50530 收藏 403 分类专栏: 数据结构拾遗 文章标签: 二叉树 前序 中序 ...
- 二叉树的前、中、后的非递归遍历
题目 实现一个链式存储的二叉树,采用非递归的形式,按照前.中.后序的顺序遍历二叉树. 代码 /** * 二叉树的前.中.后序的非递归遍历 **/#include <iostream> us ...
- 二叉树的前序,中序,后续(非递归版本)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.前序 二.后序 三.中序 总结 前言 二叉树的非递归版本的前序中序后序在面试中也经常考,必须熟练掌握! 下面将会讲 ...
- 二叉树的前,中,后序遍历(思路分析) [Java][数据结构]
二叉树的前,中,后序遍历(思路分析) 前序遍历: 先输出父节点, 再遍历左子树和右子树 中序遍历: 先遍历左子树, 再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 ...
- 深入理解二叉树的前中后序
一.问题 二叉树的前中后序遍历到底是什么,仅仅是三个顺序不同的 List 吗?为什么多叉树没有中序遍历? 二.遍历框架 所谓二叉树遍历是按某种特定规则,依次对二叉树中的节点进行相应的操作,并且每个节点 ...
- 二叉树 迭代 前 中 后_如何在Ruby中使用数组迭代计算二叉树的高度
二叉树 迭代 前 中 后 Data structures and algorithms are the heart and soul of computer science and software. ...
- 二叉树的后序非递归遍历(巧妙思想)
大家都知道二叉树的前序非递归遍历非常好写: //二叉树的结构 public class TreeNode {TreeNode left;TreeNode right;int val;TreeNode( ...
- Java二叉树的前中后序遍历
Java二叉树的前中后序遍历 1.前序遍历 1.1前序遍历概念 1.2前序遍历习题 2.中序遍历 2.1中序遍历概念 2.2中序遍历习题 3.后续遍历 3.1后序遍历概念 3.2后序遍历习题 大家好, ...
最新文章
- 160个Crackme016
- echo怎么把日志清空_电脑越来越卡到底怎么办?一分钟教你释放C盘空间,瞬间提速5倍...
- STL源码剖析(侯捷)笔记——STL概述
- matlab怎么编写风雨荷载时程,风雨荷载作用下输电塔动力响应分析
- Android控件——HorizontalScrollView使用(一)
- deepin有线网卡无法连接网络
- jquery 报错提示Uncaught TypeError: $ is not a function
- 在 Amazon SageMaker 上玩转 Stable Diffusion: 基于 Dreambooth 的模型微调
- 搞计算机的真的不配拥有爱情吗。这是她给我留下的最后一段话
- 找工作经验分享贴——硬件岗求职历程
- 【附源码】Python计算机毕业设计社区志愿者管理系统
- Android系统根目录下的各个文件夹的作用与区别介绍
- 网络协议 11 - Socket 编程(下)
- 【转】最容易理解的对卷积(convolution)的解释
- GrowingIO 数据采集 iOS SDK 测试实践
- 把生活过成 你想要的样子
- Azure: Azure AD(For Development)的使用
- 植物大战僵尸2android最新版,手机植物大战僵尸2高清版下载官方-植物大战僵尸2高清版 安卓版v2.4.8-PC6手游网...
- windows 环境下,可执行 exe 文件和 .dll 文件在不同目录下的处理办法
- gperftools安装和使用
热门文章
- 3D建模可以做什么工作呢
- vb计算机运算符号优先级,vb运算符的运算顺序是什么
- txt文本字数统计和出现字数的排序(西游记.txt)
- 计算机英语和公共英语的区别和联系,公共英语(PETS)与大学英语四级(CET)的区别和联系...
- 数据库中length的用法
- PC安装CentOS 7.0问题
- 如何在UNIAPP里发送网络请求 #在axios里内嵌request的大聪明前来填坑
- 且看中端手机市场近身厮杀,谁将获胜?
- Simply JavaScript
- MTSC2020 | 手淘AIOPS实战-消息全链路智能监控