字节跳动2-1三轮大数据方向算法20220330(代码片段)

史上最强的弟子 史上最强的弟子     2022-12-09     379

关键词:

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

package example;

import jdk.nashorn.internal.ir.BinaryNode;

import java.util.Stack;

public class asd 

    /**
     A
     B     E
     C
     D
     F    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("");

        //后序遍历2
        new 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;
    

输出结果:

字节跳动前端日常实习三轮技术面经

一面项目:描述项目某个功能的实现react的特点为什么要使用redux+immutable,redux和全局变量的区别diff算法react-redux的工作原理和相关源码还有一些项目的细节然后是基础知识:实现一个百度搜索框,包括垂直左右居中,自适应的... 查看详情

golang开发面经字节跳动(三轮技术面)(代码片段)

文章目录写在前面笔试一面epoll、select、poll区别epoll的水平触发和边缘触发的区别TCP的流量控制为什么有了流量控制还要有拥塞控制?TCP不是可靠传输吗?为什么会丢包呢?那你介绍一下拥塞控制的算法?进程、线程的... 查看详情

字节跳动2-1算法二轮面试202203-29(代码片段)

罗马数字包含以下七种字符: I, V, X, L,C,D 和 MI      1V      5X      10L      50C      100D      500M      1000这道题对应的是leetcode 中的12.整数转罗马数字packageexample;publicclass... 查看详情

字节跳动八进八出,offer到手,发现项目不重要算法才最重要(代码片段)

...#xff0c;本人刚刚大三结束,去年十二月的时候是投递了字节的视频架构的实习,共三轮技术面+一轮hr面,成功拿到offer实习了五个月。今年秋招提前批是投了抖音架构,共三轮技术面+一轮hr面,已经成功拿... 查看详情

字节跳动大数据研发岗位面试题目

java题求平方根,返回类型是整数,结果只保留整数的部分,小数部分将被舍去sql题目基础的编程语言数据结构和算法MySql和Hive的区别除了同样是存储数据的工具,再无其他的相同之处,1.存储位置不同RDBMSHDFS2.... 查看详情

字节跳动大数据研发岗位面试题目

java题求平方根,返回类型是整数,结果只保留整数的部分,小数部分将被舍去sql题目基础的编程语言数据结构和算法MySql和Hive的区别除了同样是存储数据的工具,再无其他的相同之处,1.存储位置不同RDBMSHDFS2.... 查看详情

字节跳动2-1算法二轮面试202203-29(代码片段)

罗马数字包含以下七种字符: I, V, X, L,C,D 和 MI      1V      5X      10L      50C      100D      500M      1000这道题对应的是leetcode 中的12.整数转罗马数字packageexample;publicclass... 查看详情

字节跳动2018校招算法方向(第一批)——1-最外层点(代码片段)

时间限制:C/C++1秒,其他语言2秒空间限制:C/C++32M,其他语言64MP为给定的二维平面整数点集。定义P中某点x,如果x满足P中任意点都不在x的右上方区域内(横纵坐标都大于x),则称其为... 查看详情

字节跳动2018校招算法方向(第一批)——2-最大值区间(代码片段)

时间限制:C/C++3秒,其他语言6秒空间限制:C/C++128M,其他语言256M给定一个数组序列,需要求选出一个区间,使得该区间是所有区间中经过如下计算的值最大的一个:区间中的最小数*区间所有数的和... 查看详情

字节跳动cv算法工程师要求曝光:没有大数据基础,一面必挂!

眼看着金三银四越来越近,对于广大打工人而言,往往是几家欢喜几家愁。目标达成、愿望实现的自然满心欢喜,比如顺利进阶大厂,如愿升职加薪。也有人浑浑噩噩、停滞不前,在时代的发展面前负隅顽抗&#... 查看详情

干货|词云指北(下):字节跳动数据平台词云实践

...者快速了解词云相关的算法发展,并希望总结出当前字节跳动数据平台词云发展的路线。 全文将分两次推送,第一篇专注分享词云算法的行业情况。第二篇介绍字节跳动数据平台词云实践。文|橘子 from字节跳动数据平... 查看详情

字节跳动大数据开发面试题-附答案(代码片段)

此面试题来自牛客网友分享的字节跳动应届一面,面试时长一小时。网友情况:985本硕。参考答案由本公众号提供。如有错误,欢迎指正!以下为面试过程中提问,岗位为大数据开发:自我介绍+项目介... 查看详情

2021校招字节跳动提前批

字节跳动提前批目录字节跳动提前批内容项目Java基础算法计算机网络设计模式数据库Linux总结时间:2020-07-0918:00-19:00内容项目背景:基于ZooKeeper的配置中心问题:项目的背景如何实现分布式锁的实现Java基础问题:HasMap的数据结... 查看详情

字节跳动大数据研发面试——自我反省

一、面试问题自我介绍balabala…1.1提问线程与进程的理解。具体比如…系统总线怎么理解网络爬虫的通信过程,需要经历哪些过程怎么通过链接找到服务器IP的域名解析怎么理解。TCP/UDP怎么区别。TCP三次握手GET/PUT区别系统负... 查看详情

大数据面经字节跳动

人家的面经作者:杨超越救救孩子啊链接:https://www.nowcoder.com/discuss/170799来源:牛客网早上九点的面试,投的南京的岗位一面:一面面试官人很nice,遇到不会的也会安慰我说没关系,上来先自我介绍&#x... 查看详情

大数据面经字节跳动

人家的面经作者:杨超越救救孩子啊链接:https://www.nowcoder.com/discuss/170799来源:牛客网早上九点的面试,投的南京的岗位一面:一面面试官人很nice,遇到不会的也会安慰我说没关系,上来先自我介绍&#x... 查看详情

字节跳动笔试题——算法岗

目录1.写一个函数,将单向链表反转  查看详情

字节跳动面试笔试总结——算法岗位

目录1.一棵二叉树,求最大通路长度(即最大左右子树高度之和)  查看详情