分治法。
分左右子樹進行計算,但在計算時,有兩點需要注意:
需要另外創建一個函數,它用來傳遞不能超過的最低值和不能超過的最高值;但是還有一個特殊值需要排除,就是最大最小int本身。C++代碼:
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */class Solution {public: /** * @param root: The root of binary tree. * @return: True if the binary tree is BST, or false */ bool isValidBST(TreeNode *root) { return valid(root, INT_MIN, INT_MAX); } bool valid(TreeNode *root, int min, int max) { if (!root) { return true; } if ((root->val <= min&&root->val!=INT_MIN) || (root->val >= max&&root->val!=INT_MAX)) { return false; } return valid(root->left,min,root->val)&&valid(root->right,root->val,max); }};新聞熱點
疑難解答