"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);
}
看不明白,如果传入的是空树也就是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);
}