首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
黄金罗盘_
2018-09-18 20:48
辽宁大学 Java
关注
已关注
取消关注
请问大家,刚才小红书笔试第二题二叉树的那道题怎么做?
请问大家,刚才小红书笔试第二题二叉树的那道题怎么做?
#小红书#
提示
全部评论
推荐
最新
楼层
ybf
武汉大学 算法工程师
感觉python写起来比较方便:https://www.cnblogs.com/ybf-yyj/p/9671437.html
点赞
回复
分享
发布于 2018-09-18 21:11
Jose丶
东南大学 Java
import java.util.*; /** * Created by jose on 2018/9/18. */ public class Red2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()){ String line = sc.nextLine(); String[] levelarr = line.split(" "); List<Integer> level = new ArrayList<>(); for (int i = 0; i <levelarr.length; i++) { level.add(Integer.valueOf(levelarr[i])); } line = sc.nextLine(); String[] midarr = line.split(" "); int[] mid = new int[midarr.length]; for (int i = 0; i < midarr.length; i++) { mid[i]= Integer.parseInt(midarr[i]); } boolean[] visited = new boolean[1024]; Node head = build(level,mid,visited,0,mid.length-1); leaf(head); System.out.println(); pre_visited(head); System.out.println(); pos_visited(head); } } static void leaf(Node node){ if(node==null) return; if(node.left == null&&node.right==null) { System.out.print(node.value+" "); } leaf(node.left); leaf(node.right); } static void pre_visited(Node node){ if(node == null) return; System.out.print(node.value+" "); pre_visited(node.left); pre_visited(node.right); } static void pos_visited(Node node){ if(node == null) return; pos_visited(node.left); pos_visited(node.right); System.out.print(node.value+" "); } static class Node{ int value; Node left; Node right; } public static Node build(List<Integer> level,int[] mid,boolean[] visited,int left,int right){ if(level.size()==0) return null; Node head = new Node(); head.value = level.get(0); int pos=0; for (int i = left; i <= right; i++) { if (level.get(0) == mid[i]){ pos=i; break; } } int cleft = left; int cright = pos-1; for (int i = 0; i < 1024; i++) { visited[i]=false; } for (int i = cleft; i <= cright; i++) { visited[mid[i]] = true; } List<Integer> leftchild=new ArrayList<>(); List<Integer> rightchild=new ArrayList<>(); for (int i = 1; i < level.size(); i++) { if(visited[level.get(i)]){ leftchild.add(level.get(i)); }else { rightchild.add(level.get(i)); } } head.left=build(leftchild,mid,visited,left,cright); head.right=build(rightchild,mid,visited,pos+1,right); return head; } }
点赞
回复
分享
发布于 2018-09-18 21:05
麻瓜工程师
Nvidia英伟达_亚洲研发中心_系统工程师
我是根据层序和中序重建一棵树,然后遍历
点赞
回复
分享
发布于 2018-09-19 12:34
狼来了5
米哈游_后端工程师
class TreeNode(object): def __init__(self,x): self.val = x self.left = None self.right = None class Solution(object): tree = None pre = [] post = [] end = [] def preorder(self,root): if not root: return self.pre.append(root.val) self.preorder(root.left) self.preorder(root.right) def postorder(self,root): if not root: return self.postorder(root.left) self.postorder(root.right) self.post.append(root.val) def endnode(self,root): if not root: return [] queue1 = [root] queue2 = [] while queue1: cur = queue1.pop(0) if not cur.left and not cur.right: self.end.append(cur.val) if cur.left: queue2.append(cur.left) if cur.right: queue2.append(cur.right) if queue1 == []: queue1 = queue2 queue2 = [] def build(self, sub_levelorder, sub_inorder): if sub_inorder == []: return None root_value = sub_levelorder[0] root = TreeNode(root_value) index = sub_inorder.index(root_value) left_sub_inorder = sub_inorder[:index] right_sub_inorder = sub_inorder[index + 1:] left_sub_levelorder,right_sub_levelorder = [],[] # 按照层次遍历,第一个出现的就是根节点,然后找到中序中根节点的位置,分成左右两个子树的中序。再根据这个中序的序列,找到左右子树层次遍历的序列 # 考试的时候这一步没做好,一直做不出来,看了@ningshixian的做法。 for each in sub_levelorder[1:]: if each in left_sub_inorder: left_sub_levelorder.append(each) else: right_sub_levelorder.append(each) root.left = self.build(left_sub_levelorder, left_sub_inorder) root.right = self.build(right_sub_levelorder, right_sub_inorder) return root def buildTree(self, levelorder, inorder): """ :type preorder: List[int] :type inorder: List[int] :rtype: TreeNode """ if levelorder == [] or inorder == []: return None self.tree = self.build(levelorder, inorder)
点赞
回复
分享
发布于 2018-09-18 22:20
求杭州收留
北京邮电大学 C++
Python解法 利用层序和中序递归创建二叉树,然后递归打印叶子节点,morris 前序后序遍历二叉树 # -*- coding=utf-8 -*- class TreeNode(): def __init__(self, val): self.val = val self.left = None self.right = None class Solution(): def recreate_tree(self, level, mid_order): if not level or not mid_order: return None root = TreeNode(level[0]) root_index = mid_order.index(level[0]) left_mid_order = mid_order[:root_index] right_mid_order = mid_order[root_index+1:] left_level = [item for item in level if item in left_mid_order] right_level = [item for item in level if item in right_mid_order] root.left = self.recreate_tree(left_level, left_mid_order) root.right = self.recreate_tree(right_level, right_mid_order) return root def morris_pre_traverse(self, root): if root is None: return None cur = root most_right = None while cur: most_right = cur.left if most_right: while most_right.right and most_right.right != cur: most_right = most_right.right if most_right.right is None: most_right.right = cur # 第一次到达即打印 print(cur.val, end=' ') cur = cur.left continue else: most_right.right = None else: # 没有左子树的只会到达一次 print(cur.val, end=' ') cur = cur.right print('') def print_leaf(self, root): if not root.left and not root.right: print(root.val, end=' ') return if root.left: self.print_leaf(root.left) if root.right: self.print_leaf(root.right) def morris_post_traverse(self, root): if root is None: return None cur = root most_right = None while cur: most_right = cur.left if most_right: while most_right.right and most_right.right != cur: most_right = most_right.right if most_right.right is None: most_right.right = cur cur = cur.left continue else: most_right.right = None # 在第二次到达时逆序打印cur节点的左子树的右边界 self.print_edge(cur.left) cur = cur.right # 逆序打印整个二叉树的右边界 self.print_edge(root) print('') def print_edge(self, node): tail = self.reverse_edge(node) temp = tail while temp: print(temp.val, end=' ') temp = temp.right self.reverse_edge(tail) def reverse_edge(self, node): pre = None while node: next_node = node.right node.right = pre pre = node node = next_node return pre if __name__ == "__main__": level = list(map(int, input().split())) mid_order = list(map(int, input().split())) ex = Solution() root = ex.recreate_tree(level, mid_order) ex.print_leaf(root) print('') ex.morris_pre_traverse(root) ex.morris_post_traverse(root)
点赞
回复
分享
发布于 2018-09-18 21:22
求杭州收留
北京邮电大学 C++
利用层序和中序创建二叉树 然后遍历就行了。。
点赞
回复
分享
发布于 2018-09-18 21:12
hulun
华中科技大学 Java
0.8和0.9感觉凉了
点赞
回复
分享
发布于 2018-09-18 20:57
VVV威威威
电子科技大学
A了几道
点赞
回复
分享
发布于 2018-09-18 20:52
花生儿
平安金融壹账通_大数据研究院_数据挖掘(准入职)
+2
点赞
回复
分享
发布于 2018-09-18 20:50
Shane-Yu
东华大学 Java
+1
点赞
回复
分享
发布于 2018-09-18 20:49
暂无评论,快来抢首评~
相关推荐
2025-12-28 09:27
蚌埠坦克学院 嵌入式软件开发
2025年嵌入式行情总结,及2026年行情预测
——兼谈热门岗位趋势与应届生就业规划一、2025 年嵌入式行业整体行情回顾1. 行业总体状态:回暖但分化明显2025 年嵌入式行业整体呈现“温和回暖、结构性分化”的特征。相比 2023~2024 年的招聘收缩期,2025 年企业招聘需求有所恢复但恢复主要集中在有明确业务场景和量产需求的方向初级、泛嵌入式岗位数量依旧有限,企业更倾向于“能直接上手的工程师”整体来看,嵌入式仍然是一个技术门槛高、周期长、抗替代性强的方向,但不再是“广撒网就能进”的行业。2. 需求稳定的核心下游领域2025 年需求相对稳定甚至增长的方向主要集中在:工业控制与自动化汽车电子(车身控制、域控制器、BMS)物联网与边缘设备...
点赞
评论
收藏
分享
2025-12-30 16:22
CVTE_web后台开发工程师(准入职员工)
CVTE内推,CVTE内推码
CVTE面经分享记录,摘自优秀牛油4月投的驱动开发实习,现在给我面试...也算是第一个面试了,感觉有些不是常规八股。1.内核是如何启动驱动的2.内核是如何与用户层进行交互,(回答比如说系统调用,共享内存),举一个系统调用的例子,(回答read),具体是 怎么实现的,系统调用是怎么进入内核的,最终调用的是内核的什么接口。3.I2c和spi的优劣,分别几根线,作用4.Uart波特率有哪些,项目中串口传输(也可能是指I2C)的数据包是什么格式的,怎么确保不丢包,怎么确定接收到的 就是想要的数据5.Main函数和中断中如果都用到了同一个函数,有什么值得注意的,如果都用到一个全局变量那6.使...
点赞
评论
收藏
分享
2025-11-21 11:54
门头沟学院 Java
没投简历,直接被字节HR加微信了。。。
暑假投过字节实习,当时无音讯。近期也没投过简历。今天有个字节HR直接加我微信,联系我约面😅本想说最近没时间拒绝的,她直接给我约到12月了,下周一给我发邮件有牛有知道这是啥情况嘛看她朋友圈,似乎就是字节HR不管了,12月试试吧
被迫内卷的man:
正常 字节面试是来者不拒 去的真没几个 没装备好被拷打+1
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
2025-12-03 11:33
前端是不是招的少所以给钱多?
平均数31这是谁平均的?牛客啥意思....
能赢到发光发热:
我被平均了,谁给我补差价?
点赞
评论
收藏
分享
今天 17:39
广州商学院 运营
2026-2032年全球与中国阿片类药物行业现状及市场前景报告
在全球人口老龄化加剧、慢性疼痛患者群体扩大、医疗保健体系持续完善的大背景下,阿片类药物作为强效镇痛、麻醉领域的关键药物,其市场需求与产业格局正呈现复杂而深刻的演变。阿片类药物凭借独特的镇痛机制,在中重度疼痛治疗、手术麻醉等医疗场景中发挥着不可替代的作用,但同时也面临着滥用风险管控、政策监管趋严等行业挑战。在此背景下,精准把握市场动态、厘清竞争格局、预判未来趋势,成为医药企业、投资者及相关机构的核心需求。作为全球领先的市场战略咨询机构,环洋市场咨询(Global Info Research,简称 GIR)依托 10 年以上行业分析经验、300000 + 数据库报告资源、30000 + 全球知名企...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
为什么你的实习是“无效实习”?又该如何做
2461
2
...
都 2026 年了,还在神话 AI Agent开发吗?
2327
3
...
最后一天,你的2025牛客年度报告即将封存!
2100
4
...
双非终于上岸了!!!!
1873
5
...
我的秋招回忆录:从惨败到硕果的成长之路
1596
6
...
uu们,面试的时候一定要大大方方的啊!
1596
7
...
2025找工年终总结
1441
8
...
简历求锐评,211硕士找实习
1074
9
...
字节实习生涨薪保真?
898
10
...
第一次感受到世界上有些人真的有优越感
783
创作者周榜
更多
正在热议
更多
#
对2025年忏悔
#
10005次浏览
186人参与
#
机械/制造每日一题
#
82061次浏览
1430人参与
#
一人说一家双休的公司
#
13900次浏览
150人参与
#
非技术2023笔面经
#
316879次浏览
2685人参与
#
实习没人带,苟住还是跑路?
#
18781次浏览
343人参与
#
机械求职避坑tips
#
82599次浏览
537人参与
#
工作中,努力重要还是选择重要?
#
248378次浏览
2412人参与
#
如果秋招能重来,我会____
#
79627次浏览
471人参与
#
应届生,你找到工作了吗
#
97555次浏览
596人参与
#
面试紧张时你会有什么表现?
#
21126次浏览
154人参与
#
为了找工作你投递了多少公司?
#
99503次浏览
685人参与
#
春招前还要继续实习吗?
#
12425次浏览
137人参与
#
每个月的工资都是怎么分配的?
#
81686次浏览
665人参与
#
虾皮求职进展汇总
#
362628次浏览
2767人参与
#
影石Insta360求职进展汇总
#
169346次浏览
1345人参与
#
哪些公司笔/面试难度大?
#
7478次浏览
35人参与
#
AI时代,哪些岗位最容易被淘汰
#
25980次浏览
223人参与
#
你面试被问到过哪些不会的问题?
#
107273次浏览
1879人参与
#
秋招被确诊为……
#
280433次浏览
1589人参与
#
大疆的机械笔试比去年难吗
#
96324次浏览
767人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务