Redian新闻
>
感恩发面经-Amazon第二轮电面
avatar
感恩发面经-Amazon第二轮电面# JobHunting - 待字闺中
w*h
1

谈research;
什么是binary search tree?
如何validate a BST? 写code,给了递归解法;
follow-up, 如何用非递归方法解决这个问题,coding;
问问题。
avatar
n*w
2
A也开始问非递归解法了。
avatar
q*x
3
非递归解法是啥?用栈实现中序周游?

【在 w**h 的大作中提到】
: 白
: 谈research;
: 什么是binary search tree?
: 如何validate a BST? 写code,给了递归解法;
: follow-up, 如何用非递归方法解决这个问题,coding;
: 问问题。

avatar
s*n
5
第3题就是写个Tree的中序遍历吧?
avatar
n*w
6
非递归的话,中序比较好写,但是并不graceful。
另外可以设计个数据结构,用先序后序遍历也行。
avatar
s*n
7
展开说说用先序?

【在 n*******w 的大作中提到】
: 非递归的话,中序比较好写,但是并不graceful。
: 另外可以设计个数据结构,用先序后序遍历也行。

avatar
s*n
8
先序想不出来,后序:每个节点保存子树的最大最小值,后序遍历先访问两个字节点,
再判断node->left->Max < node.value < node->left->Min;
avatar
n*w
9
这样做复杂度是O(n^2)。
比较好的方法是top-down。用min max,递归实现在这里。
http://www.leetcode.com/2010/09/determine-if-binary-tree-is-bin
http://www.mitbbs.com/article_t/JobHunting/31990685.html
如果非递归先序后序做,也是这个思路。
需要改动的是,栈的结构变成,
stack{
Node n;
int min, max;
}
出栈的时候除了得到n,还得refresh min max。
递归中序,需要保留前一个遍历过的节点的值。
referennce或者pointer实现。其实容易错。

【在 s******n 的大作中提到】
: 先序想不出来,后序:每个节点保存子树的最大最小值,后序遍历先访问两个字节点,
: 再判断node->left->Max < node.value < node->left->Min;

avatar
n*w
11
嗯,这个思路,先序后序并没有本质区别。

【在 q****x 的大作中提到】
: 先根很容易啊。
avatar
q*x
12
非递归先序和中序,记住之前一个节点值,应该最简单。

【在 n*******w 的大作中提到】
: 嗯,这个思路,先序后序并没有本质区别。
avatar
n*w
13
先序不一样啊。从栈pop出来,前一个值并不是predecessor。
只有中序是的。

【在 q****x 的大作中提到】
: 非递归先序和中序,记住之前一个节点值,应该最简单。
avatar
q*x
15
中序测bst

【在 n*******w 的大作中提到】
: 先序不一样啊。从栈pop出来,前一个值并不是predecessor。
: 只有中序是的。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。