大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。
Assume a BST is defined as follows:
- The left subtree of a node contains only nodes with keys less than the node’s key.
- The right subtree of a node contains only nodes with keys greater than the node’s key.
- Both the left and right subtrees must also be binary search trees.
class Solution { public: bool isValidBST(TreeNode *root) { return check(root, INT_MIN, INT_MAX); } private: bool check(TreeNode *root, int left, int right){ if(root == NULL) return true; return (root->val > left) && (root->val < right) && check(root->left, left, root->val) &&check(root->right, root->val, right); }//这里的左儿子的左界用上面传下来的,右界用节点值,右儿子镜面对称 };
PS:依照注意点提到的思路写的
错误
代码
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isValidBST(TreeNode *root) { if (root == NULL) return true; bool bleft = true, bright = true; if (root->left != NULL){ if (root->val > root->left->val){ //注意这里检验以及递归是不能保证根节点大于左边全部的。矛盾在于,左儿子的右儿子,以及右儿子的左儿子。 bleft = isValidBST(root->left); } else{ return false; } } if (root->right != NULL){ if (root->val < root->right->val){ bright = isValidBST(root->right); } else{ return false; } } return bleft && bright; } };
版权声明:本文博客原创文章,博客,未经同意,不得转载。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117593.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...