分治法。
分左右子树进行计算,但在计算时,有两点需要注意:
需要另外创建一个函数,它用来传递不能超过的最低值和不能超过的最高值;但是还有一个特殊值需要排除,就是最大最小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); }};新闻热点
疑难解答