LeetCode_Validate Binary Search Tree

来源:互联网 发布:高中物理题库软件 编辑:程序博客网 时间:2024/06/05 16:31

Given a binary tree, determine if it is a valid binary search tree (BST).

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.
bool IsBinarySearchTree3(TreeNode *root){int minNum = 0x80000000;int maxNum = 0x7FFFFFFF;return IsBinarySearchTree3Help(root, minNum, maxNum);}bool IsBinarySearchTree3Help(TreeNode *root, int minNum, int maxNum){if (root == NULL)return true;if (root->left != NULL){int leftMin = minNum;int leftMax = min(root->val, maxNum);if (root->left->val <= leftMin || root->left->val >= leftMax){return false;}if (!IsBinarySearchTree3Help(root->left, leftMin, leftMax)){return false;}}if (root->right != NULL){int rightMin = max(minNum, root->val);int rightMax = maxNum;if (root->right->val <= rightMin || root->right->val >= rightMax){return false;}if (!IsBinarySearchTree3Help(root->right, rightMin, rightMax))return false;}return true;}

bool isBinaryTree(TreeNode *node, int minVal, int maxVal){if (node == NULL)return true;return (minVal < node->val && node->val < maxVal) && isBinaryTree(node->left, minVal, node->val) &&isBinaryTree(node->right, node->val, maxVal);}