题目地址
https://leetcode-cn.com/problems/validate-binary-search-tree/
求解要点
中序遍历二叉树,判断值是否比前一个值大就可以了。
C语言中,函数变量中赋值&的意思是,这个函数按引用传递参数,就是可以在函数体内修改实参的值,而函数返回到主函数后,实参的值也会随之改变。
如果去掉&,则是按值传递,虽然在函数体内仍然可以修改实参的值,但是返回主函数后,原实参不会发生改变。
源码
class Solution {
public:
bool fuck(TreeNode* root,long& pre){
if(root== NULL)return true;
if(!fuck(root->left,pre)) return false;
if(root->val <= pre)return false;//比较
pre=root->val;//用现在值替换前值
return fuck(root->right,pre);
}
bool isValidBST(TreeNode* root) {
long pre = LONG_MIN;
return fuck(root,pre);
}
};