由买买提看人间百态

topics

全部话题 - 话题: inorder
首页 上页 1 2 3 4 5 6 7 8 9 10 (共10页)
z****u
发帖数: 41
1
楼主啊,他的代码这里的 "curHead -> next" 貌似使用了指向sibling的指针,不是没
有指向sibling的指针么?
我怎么觉得这一题就是iterative inorder 的题目呢,只是不是binary tree而已。pop
一次,n++,till n==100或者stack.empty(). chenglg的代码本质就是用了吧while(n++
<100) 改成了 f(n) = sth + f(--n)而已。
b********t
发帖数: 2
2
来自主题: JobHunting版 - AMAZON onsite 3月面经
第一轮:
印度小哥,先讲project。
实现一个二叉树的类,包含parent节点。
给一个二叉树的任意节点,返回inorder遍历的下一个节点。
刚开始写了返回右子树最左边的节点,后来经提醒补充了没有子树要从parent里找的情
况。中间穿插问了一些java和数据结构的小问题,不难。
第二轮:
白人,kindle组搞测试的,先是自我介绍。
然后写题:给一个string,返回出现频率最高的字符。
先给他讨论思路,问他这些char在不在ASCII范围内,他说good question,不一定。
然后用hashmap写了出来,中间让我解释了一下hash得概念,还有一些小问题记不清了
都不难。
中间遍历hashmap的时候卡了一下,忘了那个KV pair怎么写了,经提醒写出来了,后来
又发现不用遍历hashmap,直接遍历string就可以,然后改正。
最后问了一些测试的问题, 比如刚才是我写的如果输入String为空,就返回null,但
是我的方法返回类型是char,不能用null,后来告诉我可以返回‘\0’(这个我之前还
真不知道。。。)
后来又问我改如何测试,给了几个test case... 阅读全帖
f******h
发帖数: 45
3
也找工作了一段时间了,从版上学了很多,上周G家面完了,求个bless。
之前的一些都挂了,还在继续找其他的。等定下来之后一定发面经回报本版。
谢谢大家啦!!
1. http://www.mitbbs.com/article_t/JobHunting/32005597.html
1) Implement a simple calculator (+,-,*,/);
2) Implement "+1" for a large integer;
3) How to match Ads to users;
4) How to extract useful information from a forum webpage (list all
kinds of useful signal you can think of)
5) How to detect the duplicate HTML pages (large scale);
6) Find all the paths between two places on Google map;
7)... 阅读全帖
s********f
发帖数: 510
4
第一题不是要求inplace么, 为什么给了递归解法呢。
第三题没太看明白你说的Inorder Traverse。是不是面的人觉得解法不够清晰?
k***s
发帖数: 6
5
来自主题: JobHunting版 - Palantir 电面面经求指教
感觉应该是O(n)。以当前节点为inorder node的字符串长为left + 1 + right, 其中
left和right都可以只算一次然后用map存起来。
伪代码如下,感觉写得有点恶...
Character c;
Map map;
private int count(Node node, int rank) {
if (rank <= 0) {
return 0;
} else if (node == null) {
return 0;
} else if (map.containsKey(node)) {
return map.get(node);
}
int count = 1;
int leftCount = count(node.left, rank);
if (leftCount == -1) {
return -1;
} else if ((count += leftCount) == rank) {
c = node.ch;
return -1;
... 阅读全帖
G*****n
发帖数: 19
6
来自主题: JobHunting版 - Palantir 电面面经求指教
请问DAG的in order traversal 什么是停止条件?比如树的inorder 遇到叶结点(左右
child都是null)就可以返回当前recursion
那图的呢?
b*****u
发帖数: 648
7
来自主题: JobHunting版 - Tree的traversal也分BFS和DFS?
具体原理记得不太清楚了,但是直观上应该和节点的结构有关。
比如每个节点只有指向孩子节点的指针,root 已知,就不太好Inorder
关于dfs vs. bfs 马上能想到的一个例子是华容道, 给定一个开始pattern和一个结束
pattern,求路径,比较靠谱的办法是从两端开始同时进行bfs,在中间相遇。
f*******w
发帖数: 1243
8
来自主题: JobHunting版 - Tree的traversal也分BFS和DFS?
树就是图的一种啊,为什么不能BFS, DFS
你说说一个树和一个有向图在表现形式上有什么区别?
BFS就是level order
DFS的话可以是inorder, preorder, postorder
p********n
发帖数: 165
9
来自主题: JobHunting版 - Tree的traversal也分BFS和DFS?
DFS的话可以是inorder, preorder, postorder????
求解释DFS怎么in order 和post order。。。。。。
x******i
发帖数: 374
10
来自主题: JobHunting版 - leetcode最难的题目
constant space 也是可以的。
因为inorder traversal 中,只有一对(相邻的)或者两对(不相邻的)前后数字顺序
乱了。
所以不需要记录所有的节点,只要一个变量记住前一个访问过的(prev) ,跟current
比较, 如果顺序不对,就记录,全部访问后,最多2对(4个数),或者一对,交换第一
个和最后一个就好了。
r*****0
发帖数: 38
11
来自主题: JobHunting版 - leetcode最难的题目
inorder traversal 需要 logn的栈空间。

current
r*******2
发帖数: 104
12
一周之内面了微软两个组,刚刚收到结果双双悲剧,一个组的HR说It's a tough call
,另一个组的HR说very close,不知道是不是套话,总之很沮丧……来版上求问一下大
家问题可能出在哪,并且附上大概的面试过程和coding题目。
第一组:
第1轮:是一个SDE II,看名字像是中东人。coding题目是给定2棵树,判定是否其中一
棵是另一棵的subtree,同时用了DFS和BFS,写完code讨论了几个testcases和复杂度就
结束了。
第2轮:一个白哥Senior Lead,问的题目是一个maze(用2D matrix表示,有的坐标上
有障碍),给定起点和终点,找出从起点到终点的path,还是用的常规的DFS解法,搜
索过程排除有障碍的和访问过的坐标。
第3轮:一个小黑Lead II带去一起lunch,午饭之后问了大概半小时设计题,设计当软
件窗口(比如Word窗口)大小变化的时候每个子图标栏的大小如何变化,大概定义了一
下各个class,挑了其中一个function写了code。
第4轮:一个三哥Principle Lead,先问了一个ASCII和Kanji字... 阅读全帖
r*******2
发帖数: 104
13

好的,我把我的解题过程也说一下。Leetcode原题就不用说了。
第一组:
第1轮:判断subtree。假设两棵树T1和T2,先用DFS在T1里找到和T2的root一样的结点
,然后从找到的结点开始和T2进行比较,我用了BFS,就是用queue,一边一个queue,
同时push/pop进行比较,如果碰到不一样的就return false。做完了想起来其实就是
Leetcode上的Same Tree,直接还用DFS递归比queue省事。
第2轮:找出maze中的path。开一个matrix标记maze的每一个点是否访问过,然后DFS搜
索,从起点开始,查找它的上下左右邻居,如果没有访问过也没有obstacle,就作为一
个选择进行下一步搜索,一直递归下去直到找到终点为止。
第3轮:设计题。
第4轮:ASCII和Kanji字符的题以前面过,当时没做出来,答案就是回来网上搜的(参
考这个网址http://discuss.joelonsoftware.com/default.asp?interview.11.334807.4)。Spiral Matrix是Leetcode原题就不说了。
第... 阅读全帖
l**********7
发帖数: 55
14
来自主题: JobHunting版 - 请教一道题
牛!
Follow your idea. Here are my two cents.
void sortbst(int *A, int n)
{
int k, h;
//compute height
for (h=1;;h++) {
if (1< }
//start the last left node with two leaves
//do inorder traverse the array
k=1<<(h-2)-1;
while(1)
{
printf(" %d ",A[2*k+1]);
printf(" %d ",A[k]);
printf(" %d ",A[2*k+2]);
if(2*k+2>=n-1) break;
printf(" %d ", A[k/2]);
k=k+1;
}
printf("n");
}
// a should be from a com... 阅读全帖
R******9
发帖数: 267
15
来自主题: JobHunting版 - M面经
确实是,遍历叶子不需要 inorder

) {
b**********i
发帖数: 11
16
来自主题: JobHunting版 - Rocket Fuel今天Skpye面经
之前已经两轮,第一轮常规的5 hour的test,题目是auto racer test,请见http://get-that-job-at-google.blogspot.com/search/label/RocketFuel 第三道,解法用线段树,可以参考http://www.mitbbs.com/article_t/JobHunting/32573375.html 通过5个case。
第二轮是HR,让你介绍你自己,你的项目,你担任什么职责在项目中,合适开始工作等
。今天这一轮是Skype,印度老哥,给你两个数组,preorder和inorder,让你构建一个
二叉树。Leetcode原题,所以写得很快。他先问你的想法,然后让你写算法复杂度的公
司,T(n)=T(n-k)+T(k)+O(n).然后问你能否优化,我说可以优化O(n)那一项。然后
写code。 最后问了他一个关于team的问题。 不知道能否过下一轮。
a***e
发帖数: 413
17
其他两种preorder和inorder都很快写出来了,这种写到这步还是不对。明早上再做算
了,不然又睡不好。
vector postorderTraversal(TreeNode *root) {
vector ret;
if (root==NULL)
return ret;
stack st;
st.push(root);
TreeNode *r = root->left;
TreeNode *lastVisitedNode=root;
while(1)
{
while(r)
{
st.push(r);
r=r->left;
}
if (st.empty())
break;
TreeN... 阅读全帖
c********6
发帖数: 33
18
应该是 inorder必须知道,pre 和 post知道一个就可以
level order 如果不是完全二叉树的话不行,
举个例子,
假如最后一排有4个位置 但是只有两个叶子节点,
level order的话 没法判断两个叶子节点的具体位置
c**g
发帖数: 45
19
void inorderTraversalByIteration(TreeNode* root, vector& ret)
{
if(root == 0)
return;
stack s;
s.push(root);
while(s.size() > 0)
{
if(s.top()->left != 0)
{
s.push(s.top()->left);
}else
{
TreeNode* cur = s.top();
s.pop();
ret.push_back(cur->val);

if(cur->right != 0)
... 阅读全帖
n*****5
发帖数: 984
20
假设 root 有个左节点 。你就会 入站 root, left ,弹出 left。 入站left 循环
m*********a
发帖数: 3299
21
这个code 是错的,真如楼上所说,会进入死循环。
你在else 后加while (!s.empty())
然后说if (s->right!=NULL) ,push stack 后,break;
r******l
发帖数: 10760
22
这种问题自己单步执行一下不就知道了?难道只会写代码,不会debug? 
s*******7
发帖数: 23
23
来自主题: JobHunting版 - 请教一道面试题,跟数组排序有关
我觉得O(n) 可以做
1. 把无序的array给heapify
2. 建立binary tree, 建的方法是 Ai 的左边 是 A(2i+1), 右边子节点是 A(
2i + 2)
3. 把这个树, inorder打印就行了
泡这个版多年, 作点贡献 :)
j**********3
发帖数: 3211
24
来自主题: JobHunting版 - 面试题请教
只给inorder traverse,能确定binary tree么?
j**********3
发帖数: 3211
25
来自主题: JobHunting版 - 面试题请教
只给inorder traverse,能确定binary tree么?
l****o
发帖数: 135
26
来自主题: JobHunting版 - 吐槽一个面试
某上市电商公司,电话面试,是个中国人面的。
上来就用中文打招呼,那个亲切啊!花半个小时问了一堆简历上的东西,然后说做个题
写个inorder traversal吧,我说recursive还是iterative。他说就写个recursive吧,
我说recursive是不是太简单了?他说那就都写吧。于是刷刷刷就写好了,给他解释了
一下recursive的代码。他说好,再做一道给定硬币面值,求给定值如6的找钱组合数。
也是常见题,给了个例子确定了一下需求,然后刷刷刷写完,他没怎么看懂,于是在
collaedit上编译通过一个测试case。
然后,第二天就来了据信说根据你phone interview的结果,我们决定找更适合的
candidate。尼玛,不带这么耍人的。实在不很理解面试官的心里。。。
a********r
发帖数: 217
27
来自主题: JobHunting版 - find kth smallest key in BST with O(lgn)
假设BST每个key都是 >=0 的整数,而且不重复,有没有时间复杂度是O(lgn)的算法来
search kth smallest key. inorder traversal似乎不能满足要求。
a********r
发帖数: 217
28
来自主题: JobHunting版 - find kth smallest key in BST with O(lgn)
但是树已经是建好的,重建的话至少要O (n)
时间。所以说能不能优化, 整数inorder search的时间是关键。
x******0
发帖数: 1025
29
来自主题: JobHunting版 - 贡献Google 电面面经
这个就是inorder对么?
但是括号怎么弄呢
a***e
发帖数: 413
30
多谢大牛,我觉得它们都是O(N^2),但看2说自己是O(N)又不确定了。
下面这种解法应该怎么分析复杂度呢?我觉得是O(N)但还是不确定。
class Solution {
public:
TreeNode *buildTree(vector &pre, vector &in) {
int i=0,j=0;
TreeNode *root=new TreeNode(0x80000000);
TreeNode *pp=NULL,*ptr=root;
stack sn;sn.push(root);
while (j if (sn.top()->val==in[j]) {
pp=sn.top();
sn.pop();
j++;
} else if (pp) {
ptr... 阅读全帖
b******g
发帖数: 3616
31
这个应该是O(N)了,除了第一个元素外,其他每个元素进出栈一次,而且i,j各扫描pre
,in一次。
这个算法很牛啊,虽然follow了个简单的例子觉得算法应该是对的,但还没有完全理解
是什么原理。请高手解释!
M*****M
发帖数: 20
32
来自主题: JobHunting版 - LinkedIn 电面
第三题
内部数据结构用BST,不用array?以便void store(int input)时lgN?
boolean test(int val)内部先inorder BST,然后two sum?
M*****M
发帖数: 20
33
来自主题: JobHunting版 - LinkedIn 电面
第三题
内部数据结构用BST,不用array?以便void store(int input)时lgN?
boolean test(int val)内部先inorder BST,然后two sum?
C*******n
发帖数: 193
34
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:

vector inorderTraversal(TreeNode *root) {
vector ret;
if(root) {

stack stack;
stack.push(root);

TreeNode* top = stack.top();
while(!stack.empty() || top!=NULL){

... 阅读全帖
d********o
发帖数: 15
35
好像每回都跳掉了top->right 的node没有入栈
y******0
发帖数: 93
36
top = top->right;之后top可能为null,然后你上面又继续top->left
f********h
发帖数: 155
37
// 不是牛;这样简单
class Solution {
public:

vector inorderTraversal(TreeNode *root) {
vector ret;
stack stack;
TreeNode * top = root;
while (!stack.empty() || top != null) {
if (top != null) {
stack.push(top);
top = top->left;
} else {
top = stack.top();
stack.pop();
ret.push_back(top->val);
top = top->right;
}
... 阅读全帖
H******7
发帖数: 1728
38
good one

★ 发自iPhone App: ChineseWeb 8.7
b******g
发帖数: 3616
39
基本就是楼上几位说的两个问题
1.top->right始终没有进stack。当第二层的while loop结束后,top访问到了一个没有
left child的节点,输出该节点后访问到了他的right child(top=top->right),假设
这个节点为X,然后因为stack非空再次回到内层的while loop开始把这个x的left
child依次压入,但x始终没有入栈。
2.如果top->right为NULL,因为stack非空,仍旧会回到内层while loop,此时你直接
访问了NULL->left: while(top->left!=NULL)
g********r
发帖数: 89
40
来自主题: JobHunting版 - 发个f家面经,攒rp
nice. O(log(n)) 就可以找到greaterNode
递归如何做呢?
非递归还可以用Moris inorder traverse,也是O(1) space, 但是time就是O(n)了,况
且代码复杂很多,杀鸡用牛刀的感觉。
C********e
发帖数: 492
41
也算吧,
比如inorder遍历tree,不论是用stack还是递归,其实都是logN的space复杂度
真正的O(1)space解法,需要靠morris算法来
M******9
发帖数: 10
42
来自主题: JobHunting版 - 我的面试总结(FLGT+UPASD)和伪面经
基本都面完了,前一段刚注册了一个帐号,上来发文,大概说下自己的经历,抛个砖头
,希望对大家有用,也祝愿大家都能找到满意的工作。有NDA就不说onsite具体题目了
,感觉也没什么必要说,会大概说说面到的知识点,可能比较乱,大家将就着看。
基本情况:fresh cs phd, 找的都是SE的工作,为啥不找教职或者research lab这里就
不讨论了. FLGT(2 offers, 1家withdraw, 1家简历被刷), startups UPASD(2 offers,
2家电面挂,1家没申请)
pros:背景还不错,都是top school, GPA高。。(fresh貌似公司还是会稍微看看这个)
cons: 没有intern经验是硬伤,PhD期间,上完课后代码写得不多
package还没开始谈,initial offer都差不多200k+的样子,大公司hr明确表示等我都
面完了可以谈, startup都是late stage, 股票都是十万分之5-10, 感觉不好谈。LD目
前在一家大公司,说其实先去大公司几年也不错,比较稳定,貌似股票refresh也可能
不错,work/life... 阅读全帖
M******9
发帖数: 10
43
来自主题: JobHunting版 - 我的面试总结(FLGT+UPASD)和伪面经
基本都面完了,前一段刚注册了一个帐号,上来发文,大概说下自己的经历,抛个砖头
,希望对大家有用,也祝愿大家都能找到满意的工作。有NDA就不说onsite具体题目了
,感觉也没什么必要说,会大概说说面到的知识点,可能比较乱,大家将就着看。
基本情况:fresh cs phd, 找的都是SE的工作,为啥不找教职或者research lab这里就
不讨论了. FLGT(2 offers, 1家withdraw, 1家简历被刷), startups UPASD(2 offers,
2家电面挂,1家没申请)
pros:背景还不错,都是top school, GPA高。。(fresh貌似公司还是会稍微看看这个)
cons: 没有intern经验是硬伤,PhD期间,上完课后代码写得不多
package还没开始谈,initial offer都差不多200k+的样子,大公司hr明确表示等我都
面完了可以谈, startup感觉不好谈。LD目前在一家大公司,说其实先去大公司几年也
不错,比较稳定,貌似股票refresh也可能不错,work/life balance比较好。我自己是
想去startup, 但... 阅读全帖
w**********4
发帖数: 157
44
来自主题: JobHunting版 - Bloomberg phone interview 面经
也写一下最近面的bloomberg 的面经。
总共两次phone interview 每次两个题目。
第一次phone interview
第一题 max stack : 这个是 leetcode 上 min stack 的原题,只是 getMin
改成getMax
第二题 输入 一个String s 在 s 后添加最少的 String s' 得到 新的
String T 是一个 palindromic。
第二次phone interview
第一题 input array of number {1,2,3,4,5,6} return number of array {2
*3*4*5*6, 1*3*4*5*6,1*2*4*5*6,1*2*3*5*6,1*2*3*4*6,1*2*3*4*5 }, 要求 不允许用
除法。
my soluction :
publicList getResult(int[] num) {
List res = new ArrayLis... 阅读全帖
h******o
发帖数: 30
45
来自主题: JobHunting版 - FB面经
请问successor那个题考的是inorder的successor吗?
S*******C
发帖数: 822
46
public List inorderTraversal(TreeNode root) {
List res = new ArrayList();
if (root == null)
return res;
Stack stack = new Stack();
TreeNode p = root;
while (!stack.isEmpty() || p != null) {
// if it is not null, push to stack
//and go down the tree to left
if (p != null) {
stack.add(p);//stack.push(p);
p = p.left;
} els... 阅读全帖
S*******C
发帖数: 822
47
知道了,是O(h)
d********o
发帖数: 12
48
这种方法确实是O(h)
如果用Morris Traversal,空间复杂度O(1)
S*******C
发帖数: 822
49
连Morris Traversal都会写的人至少刷了500道题吧
s*********3
发帖数: 25
50
如果N是树的深度, 那么就是O(N).
如果N是节点的个数, 那么就看树是不是balance,如果是balance,那么就是O(logN).
首页 上页 1 2 3 4 5 6 7 8 9 10 (共10页)