2018秋招小红书算法方向在线编程题

代码如下:

class TreeNode:
    def __init__(self, x):
        self.left=None
        self.right=None
        self.value=x

def BuildTree(ceng, zhong):
    if len(ceng)==0:
        return None
    if len(ceng)==1:
        return TreeNode(ceng[0])
    else:
        flag=TreeNode(ceng[0])
        root=ceng[0]
        zong=zhong[:zhong.index(ceng[0])]
        cen=[]
        for i in ceng:
            if i in zong:
                cen.append(i)
        flag.left=BuildTree(cen,zong)
        cen = []
        zong=zhong[zhong.index(ceng[0])+1:]
        for i in ceng:
            if i in zong:
                cen.append(i)
        flag.right=BuildTree(cen,zong)
        return flag

def PrintLeafNode(root,node):
    if root==None:
        return
    if root.left==None and root.right==None:
        node.append(root.value)
    PrintLeafNode(root.left, node)
    PrintLeafNode(root.right, node)

def PreTravel(root,node):
    if root==None:
        return
    node.append(root.value)
    PreTravel(root.left, node)
    PreTravel(root.right, node)

def BackTravel(root, node):
    if root==None:
        return
    BackTravel(root.left, node)
    BackTravel(root.right, node)
    node.append(root.value)

ceng=input().strip().split(" ")
zhong=input().strip().split(" ")
root=BuildTree(ceng, zhong)
leaf=[]
pre=[]
back=[]
PrintLeafNode(root, leaf)
PreTravel(root, pre)
BackTravel(root, back)
print(" ".join(leaf))
print(" ".join(pre))
print(" ".join(back))

原文地址:https://www.cnblogs.com/tsdblogs/p/9672129.html

时间: 2024-08-28 20:21:54

2018秋招小红书算法方向在线编程题的相关文章

2018阿里巴巴在线编程题

在其他博客上看到一道 "2018阿里巴巴在线编程题" 我记得题目大概是这样的:输入数据n(n>=6)代表n个数,从0-9任意输入n个数,然后在n个数选出6个数xx-xx-xx表示 时:分:秒,求出最小时间和最大时间,若时间无效,则输出时间无效,例如: 输入: 6 6 5 4 3 2 1 输出: 123456 235641 输入: 6 9 9 9 9 9 9 输出: 时间无效 看着有点意思,就自己做了一遍,输出格式自己美化了一下,没有严格按照题目要求.代码如下: def find_

问题 1065: 2004年秋浙江省计算机等级考试二级C 编程题(1)

/******************************************************************** @file Main.cpp @date 2017-6-28 10:45:08 @author Zoro_Tiger @brief 问题 1065: 2004年秋浙江省计算机等级考试二级C 编程题(1) http://www.dotcpp.com/oj/problem1065.html ************************************

2015阿里秋招其中一个算法题(经典)

写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值.请注意程序效率 这是2015阿里秋招的一个在线笔试题 实现方法很简单,遍历一遍二叉树,找出最大最小,一相减就可以求出最大的差值 之前在做题的时候居然写递归的方法求值,后面测试了一下,果然结果不对 只要是非递归的的方法遍历都可以很容易找出最大值最小值,效率也比较高,时间复杂度为O(n). 下面是我用非递归从上往下遍历二叉树的方法 用队列容器即可方便实现. 我写的代码: #include

2018春招-今日头条笔试题-第三题(python)

题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 本题的做法最重要的应该是如何拼出'1234567890',对于输入表达试获得对应的结果利用python内置函数eval()即可以实现.利用5个字符串来表达'1234567890',如下(为了好看,里面加了tab空格符) '66666 ....6 66666 66666 6...6 66666 66666 66666 66666 66666''6...6 ....6 ....6 ....6 6...6 6.... 6

2018秋招校招后端方向(第二批)

用户喜好 为了不断优化推荐效果,今日头条每天要存储和处理海量数据.假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一段时间内注册的用户(标号相连的一批用户)中,有多少用户对这类文章喜好值为k.因为一些特殊的原因,不会出现一个查询的用户区间完全覆盖另一个查询的用户区间(不存在L1<=L2<=R2<=R1). 输入描述: 输入: 第1行为n代表用户的个数 第2行为n个整数,第i个代表用户标号为i的用户对某类文章的喜好度 第3行

搜狗2019秋招的一道算法题:龟兔赛跑

时间限制:3秒 空间限制:92160K 定义如下图所示的比赛地图: S表示比赛起点,E表示比赛终点.实线表示陆路,虚线表示水路.兔子只能走陆路,乌龟既可以走陆路也可以走水路.每条路径的长度在图中给出.假定兔子和乌龟足够聪明,问谁先到达终点. 输入描述: 第1行输入v1,v2.v1是兔子的速度,v2是乌龟的速度(水路.陆路速度相同).第2行输入n,m,点的编号是1~n,然后是m行,其中1是起点,n是终点(路径本身不限定方向).下面m行4个数 a, b, d, c,表示a和b之间有一条边,且其长度为

京东2018秋招c++岗 神奇数

题意大概是: 一个数比如242,把所有数字分成两组,而且两组的和相等,那么这个数就是神奇数,此时242,能够分成{2,2}和{4},所以242是神奇数. 题目要求输入n和m求[n,m]区间内神奇数的个数. 思路: 对于任意一个数字,将每一位上的数字保存到数组里,并求所有位上的数字的和sum.然后使用回溯法遍历数组, 查看数组内是否存在和为sum/2的情况,如果存在则为神奇数. bool isfind(vector<int>& nums, int sum, int cur, int be

2018秋招面试题

https://blog.csdn.net/bntX2jSQfEHy7/article/details/81187626 各大企业面试题: https://blog.csdn.net/huangshulang1234/article/details/79102943 一.阿里巴巴面试 第一个:阿里面试都问什么? :(55分钟) 01 1.开发中Java用了比较多的数据结构有哪些?2.谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?这些数据结构中是线程安全的吗?

2018秋招数据库笔试面试题汇总

基础概念 1. 什么是数据库事务?事务有什么特点? 数据库事务:是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全做,要么全不做,是一个不可分割的工作单元. 事务特点: 原子性 一致性 隔离性 持久性特 2. 主键和外键的区别? 主键所在的列的值是唯一的,不可为空的 外键所在的列的值可以重复,可以为空的,不能创建对应表中不存在的外键值 3. truncate与delete的区别? 比较 truncate delete 相同点 删除表中的全部行 不带where字句删除表中的全部行 相同点 删