大家懂二叉树吗?

2015-06-15 10:35:55 +08:00
 redhatping

首先:** 申明,我不是看到二叉树招聘门** 发这个主题的。

是在解决问题的时候,看到[数据结构]这本书,看到二叉树这个概念,我是菜鸟,这才知道二叉树是数 据结构。 所以我想问问,二叉树是必须学会的知识吗? 他在我们的日常编程中有很大作用吗?

6704 次点击
所在节点    程序员
46 条回复
likuku
2015-06-15 14:31:50 +08:00
想象成原子核裂变反应吧。
bramblex
2015-06-15 14:38:31 +08:00
@est

Ruby圈子里很多人基本功真是太差了……
est
2015-06-15 14:46:48 +08:00
@bramblex 这个事情希尔伯特也做过。他的名言是:“我们大哥廷根,街上随便一个十七八岁的孩子懂得四维几何知识都比爱因斯坦多”。

然而发明相对论的只能是老爱,搞出Rails的也只有Ruby一家。
nowcoder
2015-06-15 14:54:54 +08:00
@21grams 以前写输入法用了字典树,思路一样的。
Heartwork
2015-06-15 15:19:45 +08:00
以前写过树的几种数据结构,简单讲,这玩意用处不如hash那么糙快猛,也不如hash用的广。

以前用过的使用树的场景:
数据库索引(B+树)
业务系统内部的一个查找非常频繁但是非常少修改的结构(BBT)
自己写的类lisp解释器(AST)
bramblex
2015-06-15 15:29:31 +08:00
@est 嗯啊,对的。但是基础扎实个人觉得还是很重要的啦。没必要以偏概全的说 OwO
akira
2015-06-15 17:26:10 +08:00
如果你的工作不需要用到2叉树,那说明你不需要懂这玩意。

当然,常规的数据结构和算法,个人建议还是多少学一下吧。
some0ne
2015-06-15 17:35:37 +08:00
@est 我来打脸,首先那个PR基本没链表什么事,然后那段代码后来又被改回来了。
https://github.com/rubygems/rubygems/pull/1202
shakoon
2015-06-15 17:37:35 +08:00
看来本站半路出家的码农很多啊
sciooga
2015-06-15 18:23:08 +08:00
当初为了弄清楚自己一个对压缩数据的想法看了一堆资料就懂这个了
blackbeans
2015-06-15 18:29:41 +08:00
面试问过很多人关于二叉树的问题,基本都不会写.......几年工作经验的都有
jacob
2015-06-15 18:43:15 +08:00
是知识不?
是。

应该掌握不?
应该。

有用没?
有用。

你能用上不?
用不上。
wingoo
2015-06-15 19:14:21 +08:00
忘了差不多了, 不过大学里数据结构是全部都写过的
现在看看定义, 试了下还是能写出来的:)
dallaslu
2015-06-15 19:48:30 +08:00
如何判断某个集合中是否包含某元素?

最笨的办法是循环比较。

如果该集合中包含42亿个元素,需要比较多少次?

Java 中的 HashSet 只需要比较32次,因为应用了二叉树。
WispZhan
2015-06-15 20:08:08 +08:00
毕业前,基本无任何压力。
毕业后……,你能不翻书 记得几个就说明:
1.要么你长期记忆力好;
2.要么你经常看,经常用,从事的是高端算法研究或者数学研究;
3.要么经常刷题或刚刚参加面试;
4.要么你经常/最近主持面试;
………………

目前的高级语言基本上常用数据结构的都有现成封装与抽象接口。
WispZhan
2015-06-15 20:10:13 +08:00
@WispZhan 忘记说了。如果你从事c/c++ 开发,那么这必须是你的会的。
zhyu
2015-06-15 20:16:58 +08:00
@dallaslu HashSet 用的不是哈希表么。。或者你想说 TreeSet? TreeSet 用的倒是红黑树
jedihy
2015-06-15 21:33:27 +08:00
工作用不到二叉树说明你们业务并不偏重于数据结构相关的东西,并且瓶颈也不在这一块。在大部分底层,或者说内核开发里面都用到了二叉树,其实一般是红黑树。你的linux系统基本上时时刻刻都在查询或者增删一颗二叉树,只是你察觉不到。
dallaslu
2015-06-15 21:42:00 +08:00
@zhyu 可以从添加元素的方法开始看源码,用到了红黑树。不过你这么一说,我有点不确定我说的是 HashSet 还是 HashMap 了……
sydneyzh
2015-06-15 21:43:15 +08:00
主要是锻炼逻辑思考能力。这比死记硬背条条框框其实要不容易。面试考这些,换句话说就是考人的聪明程度。很多人其实是“背”程而不是编程,遇到这种题目就比较痛苦。所以这样就达到了刷人的目的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/198606

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX