LetCode 98. 驗證二叉搜尋樹
阿新 • • 發佈:2019-02-03
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ // 錯誤,右子樹必須全部大於當前節點,左子樹必須全部小於當前節點 // class Solution { // public: // bool isValidBST(TreeNode* root) { // return check(root); // } // bool check(TreeNode* root){ // if (root == NULL) // return true; // if (root->left != NULL && root->val <= root->left->val) // return false; // if (root->right != NULL && root->val >= root->right->val) // return false; // return check(root->left) && check(root->right); // } // }; class Solution { public: bool isValidBST(TreeNode* root) { // 注意 用long的最大最小值 return check(root, LONG_MIN, LONG_MAX); } bool check(TreeNode* root, long min, long max){ if (root == NULL) return true; if (root->val <= min || root->val >= max) return false; return check(root->left, min, root->val) && check(root->right, root->val, max); } }; static int x=[](){ std::ios::sync_with_stdio(false); cin.tie(NULL); return 0; }();