d******8 发帖数: 2191 | 1 好的数据结构基本都是在底层上实现,比如数据库搜索,页面搜索。MySQL的数据结构
是类似于二叉树的B-tree,B+tree,当然还有其他的结构像Hash。C++就是为了实现这些
底层的结构和算法的,所以C++很让人痛苦。网络编程就基本不用C++。
FORTRAN |
|
b**b 发帖数: 7 | 2 C++找到好的类库,也可以不用自己实现。
其他的语言也可以自己从头写一个二叉树。 |
|
z****e 发帖数: 54598 | 3 r是高阶语言,哪里用来算什么大数据
用来表达一些idea还差不多
真正计算都是压给那些pkg,比如scipy或者hadoop这些
r全部load数据到内存,根本算不出来
mysql底层实现就用了b-tree
c主要用来写一些底层的软件,os, db还有jvm, r这些
其它语言相对c是一种高阶的存在
最后一句是对的
其它语言甚至都不是二叉树是语言的一部分
而是hashtable这种结构是语言的一部分了
全部都是key-value pair,所有语言,到底层都是c
只有一些相对类库比较全的语言,你才能容易找到树结构
比如java里面就有treemap,但是treemap使用次数比起hashmap来说
那不知道是要小多少倍,人类发展这么多年,树有些old了
前面有人说set,set也可以多种实现,treeset比起hashset来说
我估计很多人甚至都不知道有treeset这个类
类似的还有list,arraylist比起linkedlist来说,要常用太多 |
|
|
x****o 发帖数: 21566 | 5 明明念C佳佳,Cxx里面的xx才是二叉树的意思。 |
|
x****o 发帖数: 21566 | 6 "你看,爸爸当时跟美国人结婚,一个美国人变成两个美国人。然后我们再分别结婚,
两个美国人变成四个美国人。然后我们再分别结婚,就有了8个美国人。这...",老陈
顿了顿,指向白板,对着女儿说,“...就是一棵(满)二叉树”
“我可能要红了” -- 一包被拆开的卫生巾哆嗦着对其他卫生巾说
老师带学生过马路,小明突然捂住老师高耸的胸...老师:小明你干什么? 小明:我扶
奶奶过马路! 老师:滚!
当年高考第二门是数学,家长们都在嘱咐自家小孩认真审题好好检查,只有我妈说,“
能提前半小时交卷子吗?要不赶上晚高峰,太堵了”
今天我突然意识到超级马里奥很可能是个流浪汉。他每天醒来都穿同一身衣服,在下水
道里跑来跑去,揍别人抢他们的钱,然后你猜他拿钱干啥?买蘑菇
非主流强子惨遭女友抛弃,割腕自杀。妈妈抱着强子呜咽:老天爷啊你太不公平,我是
做了什么孽呀,你让我一个白发人送红、橙、黄、绿、蓝、靛、紫发人啊...
我有了一个惊人的发现刘备的两个儿子:刘封,刘禅连起来就是封禅,说明他有帝王之
心。孙坚的两个儿子:孙权,孙策连起来是权策,说明他善于权策。再来看看老曹家:曹
操,曹仁,曹真,曹爽曹家祖宗真是个... 阅读全帖 |
|
p*e 发帖数: 6785 | 7 上次google面试,一个大牛都不会reverse 二叉树
这海关居然问怎么balance bst
可能是一个马工专业去海关,被老黑老莫鄙视,身怀绝技怀才不遇,只好和书呆锁男得
瑟。 |
|
S*******w 发帖数: 24236 | 8 赞。
集的一些常见二叉树面试问题(包括我亲身经历的)。多做多练习,相信你一定可以掌
握好。
left |
|
i***h 发帖数: 12655 | 9 这个是那本算法书二叉树一节后的题
网上查了下,除非节点带对父节点的指针才行,好象作弊了(这个额外的指针就是O(n)空
间了)
有答案么?
谢谢 |
|
c*********e 发帖数: 16335 | 10 按层遍历二叉树,无非就是把每个节点当作数组arr里的一個元素,一個index对应一個
节点。比如根节点index=0 (2的0次方 减 1),第二层的最左边那个节点index=1 (2
的一次方 减 1),第三层的最左边那个节点的index=3 (2的二次方 减 1 )第四层的最
左边那个节点的index=7 (2的三次方 减 1),etc.
所以,第一层就是arr[0]; (最左边节点index 0 为 2的0次方 减 1)
第二层就是arr[1],arr[2]; (最左边节点index 1 为 2的1次方 减 1,最右边节点
index 2 为 下一层第一個节点的index(值为3) 减 1)
第三层就是arr[3],arr[4],arr[5],arr[6]; (最左边节点index 3 为 2的2次方 减 1
,最右边节点index 6 为 下一层第一個节点的index(值为7) 减 1)
etc.
这样就可以按层遍历了。 |
|
m********t 发帖数: 13072 | 11 【 以下文字转载自 JobHunting 讨论区 】
发信人: moonlightt (月光妹妹), 信区: JobHunting
标 题: 二叉树
发信站: BBS 未名空间站 (Fri Oct 17 17:58:54 2014, 美东)
直到今年春季,我都不明白这词什么意思, 懒得理
某一天,无聊之际,查了一下对照英文,我考。。。 |
|
l****r 发帖数: 105 | 12 谢谢回复,不过我完全没看懂后半句
我的数组定义方式是
new int[] { 5, 4, 8, 11, -1, 13, 4, 7, 2, -1, -1, -1, -1, 5, 1 }
生成下面的二叉树
5
/
4 8
/ /
11 13 4
/ /
7 2 5 1 |
|
m******n 发帖数: 354 | 13 请问银行实际操作时有用binomial tree的吗,还是都用black-scholes公式啊?
如果有用二叉树的话, 是用JR的多还是用CRR的多呢?谢谢! |
|
l*********8 发帖数: 4642 | 14 逐个扫描数组元素,依次插入下面这样的二叉树
struct BinaryTreeNode {
int subNodeCount;
int val;
BinaryTreeNode * left;
BinaryTreeNode * right;
};
在插入元素x[i]的同时,也容易求得二叉树中比x[i]小的元素的数目k[i], 也就是比x[
i]小,并且位于x[i]之前的元素个数.
swap总数就是: sum(x[i] - k[i]), i from 0 to n-1
每次插入二叉树, O(logn)
n个元素, 总共 O(n*logn) |
|
b*******8 发帖数: 37364 | 15 In Order(先左再右边)遍历,访问左孩子则记录1,访问右孩子记录2,返回父节点记
录为0,得到一个记录串。
再来一次镜像操作:
In Order(先右边左边)遍历,访问右孩子则记录1,访问左孩子记录2,返回父节点记
录为0。
两次操作得到的记录一样,则对称。事实上,做第二次遍历时,只要时时跟第一的结果
比较,一旦发现不同马上就知道不对称,退出。此方法可简单扩展到N叉树。 |
|
b***u 发帖数: 12010 | 16 原楼主其实是牛人. c++ stl的map是2叉树写的,其他的java用的hash table,其他不
清楚,可能也不是2叉树。
FORTRAN |
|
a********m 发帖数: 15480 | 17 binary tree用递归应该可以吧。每个节点相等,左子树和右子树交叉相等就可以了。
bool mirrow(node* p1, node* p2)
{
if(!p1 && !p2) return true;
if(!p1 || !p2 )return false;
return p1->data == p2->data && mirrow(p1->left, p2->right) && mirrow(p1->
right, p2->left);
}
调用!root || mirrow(root->left,root->right);就可以了。
n叉树应该类似。 |
|
K*********n 发帖数: 2852 | 18 复杂度我觉得还好,这么写,如果是recursion的话。迭代的不好写。要是搞balance的
话,那就又复杂多了,再拓展到多叉树……哇哈哈 |
|
d****o 发帖数: 32610 | 19 我以前搞C#的时候用的都是四叉树
FORTRAN |
|
n*****g 发帖数: 16 | 20 你说的第一条我post帖子后就发现了,第二条我没有注意到。多谢指正!下面是新的
code。好像两个连续的一样的while有点怪,可以把外面的转为do while。
void PrintTreeLevelZigZag(Node* root)
{
Stack *currentStack = new Stack();
Stack *nextStack = new Stack();
Stack *tempStack;
bool bLeftToRight = true;//the print order of the current level is from
left to right if it is true.
Node *newNode;
if(root)
currentStack->Push(root);
while(currentStack->Peek() != NULL)
{
while(currentStack->Peek() != NULL)
{
|
|
s******n 发帖数: 3946 | 21 应该充分利用排序的特性,假设第二颗树序列为n1,n2,n3....
n1插入第一颗树后,n2不用从顶端开始查,可以从n1插入位置开始向上搜索(前提是每
个node都有parent指针) |
|
K*********n 发帖数: 2852 | 22 Node *del(Node *tree, int n){
Node *nodeFather = tree -> father;
if (tree -> val == n){
if (tree -> left == NULL && tree -> right == NULL){ // a leaf
if (nodeFather -> left == tree){
nodeFather -> left == NULL;
free(tree);
return nodeFather;
}else{
nodeFather -> right == NULL;
free(tree);
return nodeFather;
... 阅读全帖 |
|
d**e 发帖数: 6098 | 23 这样行不行?
1. array[n-1]为root
2. 遍历数组,看能不能找到两个subarray, 第一个root
3. 如果2为false返回false,否则去4
4. 对两个subarray递归操作1,2,3 |
|
f*****e 发帖数: 2992 | 24 满足两个条件即可:
1.每个上升序列的第二个元素大于该元素左边所有的元素
2.对于每两个下降序列D1,D2,要么D1和D2互不重叠,要么D1 contains D2,or D2 cont
ains D1,i.e (min(D1), max(D1))包含在D2的某个interval中或相反。 |
|
l*********8 发帖数: 4642 | 25 谢谢二爷夸奖
但我写得慢啊。 对于没见过的题,要在二十多分钟乃至更短的时间里思考算法并写出
程序,我能凑出一个来就不错了,别谈简洁了。 我多多练习吧 |
|
p****3 发帖数: 448 | 26 咋越写越难写
我开始觉得挺简单,就是用二维表格自底向上地屁
但要走斜线,还须复制以前的二岔树.
感觉实现起来挺复杂的.
有没有更简洁的犯法啊? |
|
y*******7 发帖数: 99 | 27
3
2 4
1 5
2
1 4
3 5
第二个是不是平衡 |
|
f****n 发帖数: 399 | 28 yep,第一题我现在都会,第二题十年前的我才会。 |
|
l******k 发帖数: 27533 | 29 来自主题: LeisureTime版 - 二叔雷语 你这是跟娜娜的十二叉对应吗?呵呵
求白话文版 |
|
l*r 发帖数: 79569 | 30 来自主题: LeisureTime版 - 【参赛】二 那棵树有个名字,二叉树 |
|
b*s 发帖数: 82482 | 31 来自主题: LeisureTime版 - 【参赛】二 binary tree
那棵树有个名字,二叉树 |
|
N***m 发帖数: 4460 | 32 来自主题: Programming版 - 微软真二 就他二叉树搞得最多!头疼! |
|
m******n 发帖数: 354 | 33 一语点醒梦中人啊,太感谢了!
第二个问题能也指教一下吗? |
|
y*****n 发帖数: 11251 | 34 打跑了青州派来的一营兵,高云轩等人就返回了灰埠驿,见到邓名后向他报告战斗
经过,并说已经放回了两个信使,让他们去告诉青州官府登陆明军的强大实力;同时山
东大侠也积极联络周围地方的江湖好汉出来助拳,估计很快就可以招募数百人,以监督
劳动队认真地工作。
“高少侠往来奔波辛苦了,”邓名觉得高云轩描述的江湖好汉有些类似占山为王的
山贼,这些队伍短期内是休想整编为合格军队的。不过看起来山东的绿营也没有什么战
斗力。在大明的时候,鲁军就不怎么强大,满清控制山东后这里又承平二十年,也就是
因为江湖大侠们的装备和训练更差,所以山东绿营勉强能压制住对手:“务必要提醒诸
位好汉,我们来山东主要是为了吸引清廷的注意力,为江南的明军减轻压力。如果清军
大兵压境,我们随时可能撤退。”
之前邓名就说过,一旦明军撤退,山东起义军可以潜伏,也可以跟着他一起返回江
南,然后邓名再设法安置他们。虽然现在需要山东江湖好汉的帮助,不过邓名也不打算
隐瞒真相,这些人就算是山贼,但胸中也有一腔热血。
高云轩倒是有些担忧这样会泄露明军的机密,不过邓名决心冒这个风险:“诸位山
东壮士都是自己人,咱们自... 阅读全帖 |
|