天若有情天亦老,人间正道是沧桑。输了,在那没考虑全面甚至没去考虑全面而提交的一刻就输了,再回首,正是那年似曾相识的题目,躲在旮旯深处!
错了之后一想,记忆清晰呀,微策略面试题,在家里面试的,做之前却没想起来。所以还是原样子错过了。这题就是这么一个陷阱,明白了绕过来就行了。
bool isLeftRight(TreeNode *root,int &Biggest,int &Smallest) {
if(root==NULL)
return true;
int leftBiggest,leftSmallest;
if (root->left)
{
if(root->val <= root->left->val)
return false;
if(!isLeftRight(root->left,leftBiggest,leftSmallest))
return false;
if(leftBiggest>=root->val)
return false;
}
else
{
leftBiggest = leftSmallest = root->val;
}
int rightBiggest,rightSmallest;
if (root->right)
{
if(root->val >= root->right->val)
return false;
if(!isLeftRight(root->right,rightBiggest,rightSmallest))
return false;
if(rightSmallest<=root->val)
return false;
}
else
{
rightBiggest = rightSmallest = root->val;
}
Biggest = leftBiggest>rightBiggest?leftBiggest:rightBiggest;
Smallest = leftSmallest<rightSmallest?leftSmallest:rightSmallest;
return true;
}