Redian新闻
>
"Hacking a G Interview"怎么有这样低级错?
avatar
"Hacking a G Interview"怎么有这样低级错?# JobHunting - 待字闺中
K*k
1
判断BT是否BST, 给的代码如下。
看不明白,如果传入的是空树也就是curr为null
curr.left不就crash了?
boolean isValidHelper(Node curr, int min, int max) {
if (curr.left != null) {
if (curr.left.value < min ||
!isValidHelper(curr.left, min, curr.value))
return false;
}
if (curr.right != null) {
if (curr.right.value > max ||
!isValidHelper(curr.right, curr.value, max))
return false;
}
return true;
}
相比下,SEwind520 (东南枫)的方法就靠谱的多
boolean isBST(Node node, int min, int max)
{
if (node == null)
return true;
if (node.data < min || node.data > max)
return false;

return isBST(node.left, min, node.data)
&& isBST(node.right, node.data, max);
}
avatar
a*m
2
这个是c++代码么?
avatar
K*k
3
看去都是Java的,很容易改为C++
但是Java对null进行引用取值也是有问题的吧?反正C/C++的基本就是segmentation
fault.

【在 a********m 的大作中提到】
: 这个是c++代码么?
avatar
f*t
4
java的话会抛异常
面经给的答案经常不完全正确,千万要自己写,别背代码……
比如你这个帖:http://www.mitbbs.com/article_t/JobHunting/31990427.html
今天想了一下,我的代码改过后还有bug……

【在 K*****k 的大作中提到】
: 看去都是Java的,很容易改为C++
: 但是Java对null进行引用取值也是有问题的吧?反正C/C++的基本就是segmentation
: fault.

avatar
e*l
5
如果主函数这么调用helper就不会有null的情况,你看看书上怎么写的
boolean isValid(Node root){
if(root==null) return true;
else return isValidHelper(root, INT_MIN, INT_MAX);
}
avatar
K*k
6
可惜,Hacking a G Interview没能像你那样写

boolean isValid(Node root) {
return isValidHelper(root, Integer.MIN_VALUE,
Integer.MAX_VALUE);
}

【在 e***l 的大作中提到】
: 如果主函数这么调用helper就不会有null的情况,你看看书上怎么写的
: boolean isValid(Node root){
: if(root==null) return true;
: else return isValidHelper(root, INT_MIN, INT_MAX);
: }

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