首页 > 学院 > 开发设计 > 正文

验证二叉查找树

2019-11-14 09:47:16
字体:
来源:转载
供稿:网友

分治法。

分左右子树进行计算,但在计算时,有两点需要注意:

需要另外创建一个函数,它用来传递不能超过的最低值和不能超过的最高值;但是还有一个特殊值需要排除,就是最大最小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); }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表