使用Generator处理二叉树的中序遍历

二叉树的中序遍历

let arr = [[['a'], 'b', ['c']], 'd', [['e'], 'f', ['g']]]
class Tree {constructor(left,root,right) { // 一棵树具有根节点,左孩子节点和右孩子节点this.left = left;this.root = root;this.right = right;}
}
// 将数组构造为树的处理函数
function arrToTree (arr) {if (arr.length === 1){ // 只有一个根节点return new Tree(null,arr[0],null)}if (arr.length === 2){ // 只有根节点和左孩子节点return new Tree(arrToTree(arr[0]),arr[1],null)}if (arr.length === 3) {return new Tree(arrToTree(arr[0]),arr[1],arrToTree(arr[2]))}
}
let tree = arrToTree(arr)
/* 对二叉树进行中序遍历处理(左根右的方式)
函数体内采用递归算法,所以左子树和右子树要用yield*遍历
*/
function* middleSort (that) { // that指向的是new Tree()对象if (that) {yield* middleSort(that.left) // 遍历左子树 yield that.rootyield*  middleSort(that.right)// 遍历右子树}
}
let result = []
for (let node of middleSort(tree)) { result.push(node)
}
console.log(result)

参考自ES6Generator

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/152056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java 进阶篇】Ajax 实现——JQuery 实现方式 `ajax()`

嗨,亲爱的读者们!欢迎来到这篇关于使用 jQuery 中的 ajax() 方法进行 Ajax 请求的博客。在前端开发中,jQuery 提供了简便而强大的工具,其中 ajax() 方法为我们处理异步请求提供了便捷的解决方案。无需手动创建 XMLHttpRequest 对象…

利用AlphaMissense准确预测蛋白质组范围内的错义变体效应

Editor’s summary 蛋白质中单个氨基酸的变化有时影响不大,但通常会导致蛋白质折叠、活性或稳定性方面的问题。只有一小部分变体进行了实验研究,但有大量的生物序列数据适合用作机器学习方法的训练数据。程等人开发了AlphaMissense,这是一种…

浅析ChatGPT中涉及到的几种技术点

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

Hafnium之中断管理机制

目录 1. GIC所有权 2. 非安全中断处理 3. 安全中断处理 4. 安全中断信号机制

航测三维实景:创造更加真实和精细的虚拟环境

航测三维实景:创造更加真实和精细的虚拟环境 航测三维实景技术是一项以航空摄影测量为基础,结合计算机图像处理和显示技术的高精度三维实景重建方法。它以其独特的视角和真实感十足的体验,已经广泛应用于城市规划、土地资源管理、自然资源调查…

MongoDB备份与恢复以及导入导出

MongoDB备份与恢复 1、mongodump数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据 (数据和数据结构) 或指定数据(集合、部分集合内容)到指定目录中。 语法: mongodump -h dbhost -d dbname -o dbdirec…

大数据时代,怎样通过日志分析保护我们的数据!

在今天的大数据时代,大量的数据被生成和存储。对于IT行业来说,日志文件是宝贵的信息财富。 通过合理的日志分析和解读,可以帮助企业提高运维效率、加强安全防护、改进产品质量和优化用户体验,本文将深入探讨日志分析在IT中的重要性…

基于R语言平台Biomod2模型的物种分布建模与可视化分析

!](https://img-blog.csdnimg.cn/84e1cc8c7f9b4b6ab60903ffa17d82f0.jpeg#pic_center)

设计模式-状态模式-笔记

状态模式State 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“状态变化”模式为这一问题提供了一种解决方案。 经典模式:State、Memento 动机&#xff08…

【飞控调试】DJIF450机架+Pixhawk6c mini+v1.13.3固件+好盈Platinium 40A电调无人机调试

1 背景 由于使用了一种新的航电设备组合,在调试无人机起飞的时候遇到了之前没有遇到的问题。之前用的飞控(Pixhawk 6c)和电调(Hobbywing X-Rotor 40A),在QGC里按默认参数配置来基本就能平稳飞行&#xff0…

Git常用指令-1

Git常用指令&#xff1a; git branch: 列出本地所有分支&#xff1a;git branch创建新分支&#xff1a;git branch <branch_name>删除本地分支&#xff1a;git branch -d <branch_name>切换分支&#xff1a;git checkout <branch_name> 或 git switch <br…

SpringBoot——日志及原理

优质博文&#xff1a;IT-BLOG-CN 一、SpringBoot日志 选用 SLF4j&#xff08;接口&#xff09;和 logback&#xff08;实现类&#xff09;&#xff0c;除了上述日志框架&#xff0c;市场上还存在 JUL(java.util.logging)、JCL(Apache Commons Logging)、Log4j、Log4j2、SLF4j…

2024中国人民大学计算机考研分析

24计算机考研|上岸指南 中国人民大学 中国人民大学计算机考研招生学院是信息学院。目前均已出拟录取名单。 中国人民大学在1978年创立了经济信息管理系&#xff0c;它是国内最早建立的将数学与信息技术在经济管理领域应用为特色的系科。1986年&#xff0c;在原系计算站的基础…

js-WebApi笔记之BOM

目录 window对象 定时器-延迟函数 location对象 navigator对象 histroy对象 本地存储 localStorage sessionStorage localStorage 存储复杂数据类型 window对象 BOM (Browser Object Model ) 是浏览器对象模型 window对象是一个全局对象&#xff0c;也可以说是JavaScr…

C#入门(12):反射介绍

C# 反射&#xff08;Reflection&#xff09;是一个强大的机制&#xff0c;允许在运行时检查程序集、模块和类型的元数据&#xff0c;以及动态创建和操作类型的实例。通过反射&#xff0c;你可以在运行时获取和设置对象的属性、调用方法、创建新对象&#xff0c;甚至可以加载新的…

基于ResNet框架的CNN

数据准备 DATA_URL http://download.tensorflow.org/example_images/flower_photos.tgz 一、训练集和验证集的划分 #spile_data.pyimport os from shutil import copy import randomdef mkfile(file):if not os.path.exists(file):os.makedirs(file)file flower_data/flower…

PHP笔记-->读取JSON数据以及获取读取到的JSON里边的数据

由于我以前是写C#的&#xff0c;现在学一下PHP&#xff0c; 在读取json数据的时候被以前的思维卡住了。 以前用C#读取的时候&#xff0c;是先定义一个数组&#xff0c;将反序列化的json存到数组里面&#xff0c;在从数组里面获取jaon中的“data”数据。 其实PHP的思路也是一样…

ASP.NET 开发几个知识点

1、 皮肤设定&#xff1a; 项目右键&#xff0c;建立皮肤 app_themes 文件夹&#xff0c;右键 建立 web from 皮肤文件&#xff0c; 设定皮肤样式。全局使用皮肤 web.config 增加 <pages styleSheetTheme"Skin1" /> &#xff0c;或在 具体页面 头 增加 sty…

算法leetcode|89. 格雷编码(rust重拳出击)

文章目录 89. 格雷编码&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 89. 格雷编码&#xff1a; n 位格雷码序列 是一个由 2n 个整数组…

11.20 知识总结(choices参数、MVC和MTV的模式、Django与Ajax技术)

一、 choices参数的使用 1.1 作用 针对某个可以列举完全的可能性字段&#xff0c;我们应该如何存储 .只要某个字段的可能性是可以列举完全的&#xff0c;那么一般情况下都会采用choices参数 1.2 应用场景 应用场景&#xff1a; 学历&#xff1a; 小学 初中 高中 本科 硕士…