由买买提看人间百态

topics

全部话题 - 话题: postorder
首页 上页 1 2 3 4 下页 末页 (共4页)
s********k
发帖数: 6180
1
来自主题: JobHunting版 - 哪位有用stack实现postorder traversal BT
每个节点只有left,right和value,不能加mark是否被访问过。用stack实现的?谢谢
d**e
发帖数: 6098
2
来自主题: JobHunting版 - 哪位有用stack实现postorder traversal BT
前个星期大家讨论过,看这里 :)
http://mitbbs.com/article_t/JobHunting/31721905.html
s********k
发帖数: 6180
3
来自主题: JobHunting版 - 哪位有用stack实现postorder traversal BT
多谢!
g*****x
发帖数: 799
4
来自主题: JobHunting版 - 问一道算法题
如果是binary的话inorder+preorder或inorder+postorder
n-nary存(node, parent) pair貌似可以,不知道有什么更好的方法
l*******x
发帖数: 11
5
来自主题: JobHunting版 - a公司面筋 + 求a公司各个组介绍
我觉得这道题的本质是考 打印左边: preorder, 打印叶子,inorder,打印右面,
postorder
y**********7
发帖数: 17
6
来自主题: JobHunting版 - 报google nyc offer,并分享面经
终于拿到offer,从上个月16号on-site完到今天,一共等了1个多月。今天接到
recruiter的电话后兴奋地在办公室里蹦了好几下,我旁边的哥们都震惊了。哈哈。
先报下背景,fresh cs master, 无牛实习,在学校一直跟着一个还不错的项目。
google给了我10.5w base+15% bonus+150 stock,不知道是个什么水平,但我已经很满
足了,准备从了。
第一个电面:
1. 比较hashtable和BST,神马时候用hashtable,神马时候用BST。各自的优势与缺点。
2. 那人在doc里粘了个BST的图,然后让我分别写下preorder, postorder和inorder。
然后问我已知这三个order的结果,能不能construct原本的bst。
3. 填这样一个函数 String reorder(String s, String order), 也就是要把s根据
order的顺序重新排序,然后返回。比如reorder("banana","na")应该返回"nnaab"。
order里没有出现的字母放在最后面就行了。
第二个电面:
1. 聊了... 阅读全帖
y*******g
发帖数: 6599
7
来自主题: JobHunting版 - 报google nyc offer,并分享面经
preorder postorder什么recursive就可以了吗?
重构要code么?感觉时间不是很够啊
x*********0
发帖数: 49
8
来自主题: JobHunting版 - blackmail到底是怎么回事?
原帖:
先报下背景,fresh cs master, 无牛实习,在学校一直跟着一个还不错的项目。
google给了我10.5w base+15% bonus+150 stock,不知道是个什么水平,但我已经很满
足了,准备从了。
第一个电面:
1. 比较hashtable和BST,神马时候用hashtable,神马时候用BST。各自的优势与缺点。
2. 那人在doc里粘了个BST的图,然后让我分别写下preorder, postorder和inorder。
然后问我已知这三个order的结果,能不能construct原本的bst。
3. 填这样一个函数 String reorder(String s, String order), 也就是要把s根据
order的顺序重新排序,然后返回。比如reorder("banana","na")应该返回"nnaab"。
order里没有出现的字母放在最后面就行了。
第二个电面:
1. 聊了一下我现在做的项目
2. 比较array和linked list的。
3. 两个linked list,如何找到intersect的那个node。
4. 给一个i... 阅读全帖
l*****a
发帖数: 559
9
来自主题: JobHunting版 - 说说面了几个老印的体会
wiki上那个postorder的是要用flag记录是否访问过,
不用flag的非递归的还是有点麻烦的。
n********7
发帖数: 73
10
来自主题: JobHunting版 - A家面经, offer, 请教Negotiation
http://www.ihas1337code.com/2011/04/construct-binary-tree-from-
and-preorder-postorder-traversal.html
意思很明白,不过算法还是有一点点麻烦……
r******n
发帖数: 170
11
感觉可以模仿postorder的iterative 方法写,也应该得加个visited flag
如下:
void mirror(Node* root)
{
if (root == NULL)
return;
mirror(root->left);
mirror(root->right);

Node* tmp =root->left;
root->left=root->right;
root->right=tmp;
}
void mirror_iter(Node* root)
{
if (root == NULL)
return;
stack nodeStack;
nodeStack.push(root);
while (!nodeStack.empty())
{
Node* curr=nodeStack.top();
if (curr->left != NULL && curr-... 阅读全帖
s*****y
发帖数: 897
12
来自主题: JobHunting版 - 问个1337网页上面的经典题
Construct Binary Tree From Inorder and Preorder/Postorder Traversal
const int MAX = 256;
// a fast lookup for inorder's element -> index
// binary tree's element must be in the range of [0, MAX-1]
int mapIndex[MAX];
void mapToIndices(int inorder[], int n) {
for (int i = 0; i < n; i++) {
assert(0 <= inorder[i] && inorder[i] <= MAX-1);
mapIndex[inorder[i]] = i;
}
}
// precondition: mapToIndices must be called before entry
Node *buildInorderPreorder(int in[], int pre[], int n, int offse... 阅读全帖
g*****i
发帖数: 2162
13
来自主题: JobHunting版 - 攒人品,amazon一面经历
我觉得inorder,preorder, postorder的iterative都可以吧,但是我们不是比较结果,而
是过程. 入栈的时候两个数要都有node入,如果有exception说明结构不同.出栈的时候
值要一样.
m**q
发帖数: 189
14
来自主题: JobHunting版 - 攒人品,amazon一面经历
只看pop的两个值是不够的,比如getback上面举得例子。
两个树pop pre-order traversal pop的顺序都是1,2,3
guangyi说的看过程大概是可以的,或者就干脆最直接的
preorder + inorder 或者 postorder + inorder
y******n
发帖数: 47
15
来自主题: JobHunting版 - 攒人品,amazon一面经历

既然是BST, 那么只用preorder或者postorder序列就可以判断出来了吧, 不需要两个序
列. 一般的binary tree需要两个序列
g*****i
发帖数: 2162
16
递归的很容易写,有非递归的解法呢?
r*******y
发帖数: 1081
17
there is. just google.
v*****k
发帖数: 7798
18
来自主题: JobHunting版 - 请教一道面试题,关于tree的
不可能啊。任何operator都一定有两个子树。否则算式怎么成立呢?
PreOrder: * + 1 2 3
PostOrder: 1 2 + 3 *
* push stack 0
+ push stack 1, null push stack 0
1 push stack 1
2 push stack 1
stack 1 has 3 elements, back to stack 0, 3 push stack 0
然后先打印stack 1 再打印stack 0
d*******h
发帖数: 642
19
来自主题: JobHunting版 - 请教一道面试题,关于tree的
按照这个写法,出来的postorder 是 2 1 + 3 *
r******n
发帖数: 170
20
来自主题: JobHunting版 - 请教一道面试题,关于tree的
贴个tree的版本,不过空string对应空tree的时候,似乎空指针处理的有些ugly,求更
简洁版本。
struct BNode
{
char c;
BNode* left;
BNode* right;
BNode():c(0){}; //avoid uninitialized value for c
BNode(char _c):c(_c),left(NULL),right(NULL){};
};
void pre2bst(string pre, size_t& start, size_t len, BNode* &p)
{
if(start {
p=new BNode(pre[start]);
size_t curr=start;
start++;
if(pre[curr]=='+'||pre[curr]=='-'||pre[curr]=='*'||pre[curr]=='/')
{
pre2bst(pre,s... 阅读全帖
S**I
发帖数: 15689
21
来自主题: JobHunting版 - [合集] A家面经, offer, 请教Negotiation
☆─────────────────────────────────────☆
hehe123 (hehe) 于 (Wed May 4 22:12:56 2011, 美东) 提到:
面经:
1. 两个sorted的数组merge
2. Binary Tree的Serialization和Deserialization, 随便用什么方法实现
3. 设计一DVD出租系统,database table, 类和接口等
4. Large file, multiple lines, how to get any line in equal probablity, 文件
太大内存无法装入
5. 用pre-order in-order sequence重构binary tree.
6. 大量behavior问题。每个人几乎问了15分钟这样的问题,然后只30分钟做题。
Offer:
Base: $116K
Stock: 320
Sign on: $32K
比现在的好不了太多,不过A家忙多了。请问怎么能多要点?
☆─────────────────────────────────... 阅读全帖
g**u
发帖数: 504
22
【 以下文字转载自 Computation 讨论区 】
发信人: gubu (法相), 信区: Computation
标 题: 问一个C++的binary search tree类实现问题
发信站: BBS 未名空间站 (Mon Jan 30 16:55:19 2012, 美东)
我想让search返回一个指向node的指针,下面代码编译有错误,不知道错在哪里?
错误提示是
error: expected constructor, destructor, or type conversion before ‘*’
token
search函数的实现如下:
template
BinarySearchTree::tree_node* BinarySearchTree::search(tree_node* p, T
d)
{
if(p==NULL||d==p->data)
return p;
else if(d>p->data)
return search(p->right,d);
else
... 阅读全帖
g**u
发帖数: 504
23
【 以下文字转载自 Computation 讨论区 】
发信人: gubu (法相), 信区: Computation
标 题: 问一个C++的binary search tree类实现问题
发信站: BBS 未名空间站 (Mon Jan 30 16:55:19 2012, 美东)
我想让search返回一个指向node的指针,下面代码编译有错误,不知道错在哪里?
错误提示是
error: expected constructor, destructor, or type conversion before ‘*’
token
search函数的实现如下:
template
BinarySearchTree::tree_node* BinarySearchTree::search(tree_node* p, T
d)
{
if(p==NULL||d==p->data)
return p;
else if(d>p->data)
return search(p->right,d);
else
... 阅读全帖
S**I
发帖数: 15689
24
☆─────────────────────────────────────☆
gzou (gzou) 于 (Thu May 12 02:26:35 2011, 美东) 提到:
马上就要G on site了,
求祝福。
下面是从本版收集到的Google的试题,便于大家查询。
申明:有的附带有解释说明的,也来自于本版或者网络,大家自己看, 不保证真确
http://www.mitbbs.com/article_t1/JobHunting/31847453_0_1.html
本人ECE fresh PhD,背景是电路/EDA,跟G业务基本没什么关系
同学内部推荐的,很简单的一次电面就给了onsite
题都不难,但是自己没把握好机会,出了一些小bug。
总的感觉,出错就是硬伤,宁可从最简单的算法写起,也不能出错。
电面:
1,Skip list, http://en.wikipedia.org/wiki/Skip_list
写code实现struct skip_list * find(struct skip_list *head, int value)
2,sorted array... 阅读全帖
S**I
发帖数: 15689
25
☆─────────────────────────────────────☆
gzou (gzou) 于 (Thu May 12 02:26:35 2011, 美东) 提到:
马上就要G on site了,
求祝福。
下面是从本版收集到的Google的试题,便于大家查询。
申明:有的附带有解释说明的,也来自于本版或者网络,大家自己看, 不保证真确
http://www.mitbbs.com/article_t1/JobHunting/31847453_0_1.html
本人ECE fresh PhD,背景是电路/EDA,跟G业务基本没什么关系
同学内部推荐的,很简单的一次电面就给了onsite
题都不难,但是自己没把握好机会,出了一些小bug。
总的感觉,出错就是硬伤,宁可从最简单的算法写起,也不能出错。
电面:
1,Skip list, http://en.wikipedia.org/wiki/Skip_list
写code实现struct skip_list * find(struct skip_list *head, int value)
2,sorted array... 阅读全帖
S********t
发帖数: 3431
26
看似是旧题,你仔细做就知道不是了。跟经典的重健二叉树的题有点类似,但要稍难些。
现在有个树的类,不让你直接知道树的结构,但是有一个visitor可以访问前
序和后序的节点,现在你要写一个你自己的visitor目的是重建树,给你一场面试的时
间你能写吗?
struct Node { ... };
class Tree {
public:
void Walk(TreeVisitor *visitor);
...
};
class TreeVisitor {
public:
virtual ~TreeVisitor();
virtual void PreOrder(const char *node_name, const char *node_value, bool is_leaf) = 0;
virtual void PostOrder(const char *node_name, const char *node_value, bool is_leaf) = 0;
};
现在你要做的是:
1 定义一个你自己的tree data structure (class MyTree)
2 写一个... 阅读全帖
S********t
发帖数: 3431
27
来自主题: JobHunting版 - 说说你面过最难的算法coding题目
好吧,那我说清楚些
有个general tree,内部结构就是:
class Tree {
public:
void Walk(Visitor *v) {
// in preorder sequence
v->PreVisit(...);
...
// in postorder sequence
v->PostVisit(...);
...
}
private:
ValueType node_value;
vector children_;
}
class Visitor {
public:
virtual void PreVisit(const ValueType &node_value, bool is_leaf) = 0;
virtual void PostVisit(const ValueType &node_value, bool is_leaf) = 0;
}
Let's say you define your own tree data structure:
struct MyTree ... 阅读全帖
l*********8
发帖数: 4642
28
void PostOrder(Node * root)
{
for (Node * p=root, prev=root; p; } {
if (prev != p->left && prev != p->right && p->left) {
prev = p; p = p->left;
} else if (prev != p->right && p->right) {
prev = p; p = p->right;
} else {
Print(p->data);
prev = p; p = p->father;
}
}
}
d******a
发帖数: 238
29
来自主题: JobHunting版 - 2道面试题.
举2个例子
-1 返回0
-1 0 -1 0 返回0
第二题我用的也是postorder的方式写的,不知道有没有其他好的idea.
s********0
发帖数: 34
30
来自主题: JobHunting版 - 这道FB题怎么做?
那举个特例:二叉树
1 1
/ \
2 2
preorder: 1->2
postorder: 2->1
单单你给的条件ms不能保证unique啊, 我丢什么东西了么?

leaf
j********2
发帖数: 82
31
来自主题: JobHunting版 - 这道FB题怎么做?
do{
// traverse up the tree using post-order sequence
treePtr = treePtr.parent;
postPtr = next(postPtr); //what is the value of postPtr here? How can
this make us go back to the root?
} while(postPtr is not leaf);
Also, is it true that (preorder, postorder) can uniquely determine a general
tree?
Many thanks!

using
usin
ca
point
curren
r
initial
m*****5
发帖数: 66
32
本人菜鸟一枚,不在牛A和牛C中间。
请各位大神轻拍!
听说本版祝福很灵,借人气求海量祝福。
成功后买包子送给大家,谢谢大伙啊!!!
周二onsite 至今都没有消息 
fresh MS当成PhD面了(听说MS3轮,PhD4轮,我就多了一轮design)
郁闷紧张中
puzzle:
balance(平衡天平),就是postorder traversal的应用,我用cache加速。
测试用例就三个,个人怀疑那code碰到大数据量就timeout了。
各位大神点评还可以怎么加速吧。
店面一次,两道题目:
1。isBST。
2。reverse words in sentence。
面试官非常nice,可能题目也不难,主要考察会不会编程。
最后稍微多聊了一些work相关的东东,超时几分钟。
题目不难,onsite详细面经如下(只给出了题目范围,具体题目由于NDA就不敢透露了):
0。午饭+参观。
1。组合coding+递归coding。
2。两数据结构coding。
3。behavior+小coding。
4。product design(考官最后说学术上已经解决,实现是个challe... 阅读全帖
g****y
发帖数: 240
33
left tree的post_index不对。

,
i***e
发帖数: 452
34
把传值改成传引用就行了
j******2
发帖数: 362
35
没用啊。
不知道可不可以不用recursion
B*******1
发帖数: 2454
36
你贴贴fail了哪个case

,
i**********e
发帖数: 1145
37
你不能过large case是因为使用内存超过限制了。
为什么?
因为你传送 vector 可是 pass by value 阿。。
这个每一层递归都得拷贝,内存使用很大啊。
改成 pass by reference:
vector & 或者 const vector & 就行了。。。

,
j******2
发帖数: 362
38
啊,权威回答!
终于明白为什么全部leetcode都用pass by reference了。。。一直的一个puzzle。
谢谢:)
看来以后递归里的参数能用pass by reference要尽量用pass by reference。
p*******8
发帖数: 344
39
来自主题: JobHunting版 - LeetCode construct Binary Tree
其中有个input是inorder=[1,2], preorder=[2,1],eclipse里面跑了没错误,结果也是
正确的,为什么leetcode judge 就说runtime error? 有什么限制吗?inorder/
postorder也有这个问题,做过的大侠说说看?
c******t
发帖数: 391
40
debug了一下,貌似是那个Arrays.BinarySearch的问题,比如BinarySearch([2,1],1)
的结果是-1,因为不是有序的。 换成下面的搜索就可以了:
for(inorderRootPos = 0; inorder[inorderRootPos]!=rootVal; inorderRootPos++);
//empty loop body
my 2 cents :)
t****n
发帖数: 19
41
多谢多谢
自己傻了,怎么会去用BinarySearch..状态不好时真不该去写代码..

);
K*********n
发帖数: 2852
42
来自主题: JobHunting版 - Amazon 电面
嗯,inorder也可以,postorder就不好写了,非递归的
c*****a
发帖数: 808
43
来自主题: JobHunting版 - Amazon 电面
preorder的iterative跟postorder可以很接近啊,差别就是2条stack...多一两行code
h****n
发帖数: 1093
44
来自主题: JobHunting版 - Amazon 电面
一个的stack只会写改动TreeNode的结构体的post traversal版本呵呵
假设允许改动treenode,加个bool标志位visited,初始都初始化为false
够简洁吧。。
void PostOrder(TreeNode * root)
{
TreeNode* cur;
if(root)
{
stack st;
st.push(root);
while(!st.empty())
{
cur = st.top();
st.pop();
if(cur->visited)
cout<val< else
{
cur->visited = true;
st.push(cur);
if(cur->right) st.push(cur->r... 阅读全帖
c********t
发帖数: 5706
45
来自主题: JobHunting版 - LeetCode题Binary Tree Inorder Traversal
上次有人发了 postorder只用一个stack的iteration解法。 inorder有谁有解法?
我用了一个stack还用了一个size n 的hashmap,好像不太漂亮。
o***d
发帖数: 313
46
来自主题: JobHunting版 - A电面一题 基本已挂
还是不是很确定到底他要你怎么做.
综合上面的各位,那么solution:
1) PostOrder traverse
2) At each record of csv file, save children's line number first, then, use
another special token (say, :) to start string, which means the record saved
will look like this:
-1,-1:"first left"
-1,-1:"first right"
1,2: "root"
this is how it should work?
c**y
发帖数: 172
47
brutal force复杂度是比较高,但是如果有duplicate的话,只能用brutal force吧。
我只是不理解为什么CC150和我贴的论坛上说只用InOrder和PreOrder就可以了。上面那
个反例说明只用InOrder和PreOrder不够的。另外一个问题是InOrder,PreOrder和
PostOrder是不是就可以了呢(对于没有duplicate的元素)?
e****e
发帖数: 418
48
我觉得你的反例已经说明只用InOrder和PreOrder是不行的。我也给出一个反例说明即
使有PostOrder还是不行。
T1:
1
/
2
T2:
1
c**y
发帖数: 172
49
I come up with some questions when considering the following problem. A
related discussion is found here
http://stackoverflow.com/questions/1017821/find-whether-a-tree- but I didn't find the answer to my particular questions.
Problem: given two binary trees T1 (large) and T2 (small), how do we check
whether or not T2 is a subtree of T1? Brutal force solution is out of scope
of this post. Another solution is as follows. A general idea is to serialize
T1 and T2 into two arrays A(T1) and A(T2) firs... 阅读全帖
p*****2
发帖数: 21240
50
来自主题: JobHunting版 - CC150最大的好处

你这个理解其实有些误区。因为吧,Code Lee上的一题可能是几题。
不如inorder transversal其实包含了很多题
1. dfs
2. iterative (我知道有三种解法)
3. morris
这样就是算5道题了,然后preorder+postorder就是10几道道题了。
首页 上页 1 2 3 4 下页 末页 (共4页)