字节跳动2-1 三轮大数据方向算法20220330

2023-10-25 12:38

本文主要是介绍字节跳动2-1 三轮大数据方向算法20220330,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

新鲜出炉,大数据的总监,一上来什么都没问,让我写一个非递归后续遍历。很不好意思让他打脸了,这个题我做过5片了,理解上还是很深刻的。我就想对他说为啥面试连自我介绍都不给我,就让我做题,这么无视我吗,我就想说我做出来了你咋个也不让我继续面了,太无理了。

package example;import jdk.nashorn.internal.ir.BinaryNode;import java.util.Stack;public class asd {/**AB     ECDF    G* @param args*/public static void main(String[] args) {ErChaNode erChaNodeA = new ErChaNode("A");ErChaNode erChaNodeB = new ErChaNode("B");ErChaNode erChaNodeC = new ErChaNode("C");ErChaNode erChaNodeD = new ErChaNode("D");ErChaNode erChaNodeE = new ErChaNode("E");ErChaNode erChaNodeF = new ErChaNode("F");ErChaNode erChaNodeG = new ErChaNode("G");erChaNodeA.leftNode = erChaNodeB;erChaNodeA.rightNode = erChaNodeE;erChaNodeB.leftNode = erChaNodeC;erChaNodeB.parentNode = erChaNodeA;erChaNodeC.rightNode = erChaNodeD;erChaNodeC.parentNode = erChaNodeB;erChaNodeD.leftNode = erChaNodeF;erChaNodeD.rightNode = erChaNodeG;erChaNodeD.parentNode = erChaNodeC;erChaNodeF.parentNode = erChaNodeD;erChaNodeG.parentNode = erChaNodeD;erChaNodeE.parentNode = erChaNodeA;//后序遍历new asd().endOutFor(erChaNodeA);System.out.println("");//后序遍历2new asd().endOutFor2(erChaNodeA);System.out.println("");}//方法2://后序遍历左右中private void endOutFor2(ErChaNode erChaNode) {ErChaNode root =erChaNode;ErChaNode zanCun = null;Stack<ErChaNode> stack = new Stack<>();while(root!=null||!stack.isEmpty()) {while (root != null) {stack.push(root);root = root.leftNode;}root = stack.pop();if (root.rightNode == null || root.rightNode == zanCun) {System.out.print(root.value);zanCun = root;root = null;} else {stack.push(root);root = root.rightNode;}}}//方法1:后序遍历左右中private void endOutFor(ErChaNode erChaNode) {Stack<ErChaNode> stack1 = new Stack<>();Stack<Integer> stack2 = new Stack<>();int i = 1;while(erChaNode != null || !stack1.empty()){while (erChaNode != null){stack1.push(erChaNode);stack2.push(0);erChaNode = erChaNode.leftNode;}while(!stack1.empty() && stack2.peek() == i){stack2.pop();System.out.print(stack1.pop().value);}if(!stack1.empty()){stack2.pop();stack2.push(1);erChaNode = stack1.peek();erChaNode = erChaNode.rightNode;}}}
}class ErChaNode{public ErChaNode parentNode;public ErChaNode leftNode;public ErChaNode rightNode;public String value;public  ErChaNode(String value){this.value = value;}
}

输出结果:

这篇关于字节跳动2-1 三轮大数据方向算法20220330的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/282632

相关文章

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入