二叉搜索树的判断(双指针解决)
98. 验证二叉搜索树 - 力扣(LeetCode)
class Solution {
public:TreeNode*pre=NULL;bool isValidBST(TreeNode* root) {if(root==NULL){return true;}bool left=isValidBST(root->left);if(pre!=NULL&&pre->val>=root->val){return false;}pre=root;bool right=isValidBST(root->right);return left&&right;}
};
根据二叉搜索树的定义,左子树的所有值小于根节点的值,右子树的所有值大于根节点,采用中序遍历的方式,判断左子树的值是否小于根节点,如果小于根节点则返回true,大于则返回false。
要想要比较两个值的大小,应想到应用双指针的解法,采用中序遍历的方式,定义布尔值储存左子树的情况,将每一次的pre的值定义为前一次遍历到的节点,在左子树遍历结束,开始进行判断,如果前一次遍历到的左节点大于等于根节点的值,则返回false。最后如果左右子树都返回true,结果才为true。