- 问题
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 inorderl(struct TreeNode *root,int a) { if(root==NULL) return true; if(root->val>a || root->val==a) return false; return inorderl(root->left,a)&&inorderl(root->right,a); } bool inorderr(struct TreeNode *root,int a) { if(root==NULL) return true; if(root->val<a || root->val==a) return false; return inorderr(root->left,a)&&inorderr(root->right,a); } bool isleft(struct TreeNode *root,int a) { if(root==NULL) return true; if(root!=NULL && root->left==NULL) return true; return inorderl(root->left,a); } bool isright(struct TreeNode *root,int b) { if(root==NULL) return true; if(root!=NULL && root->right==NULL) return true; return inorderr(root->right,b); } bool isValidBST(struct TreeNode* root) { if(root==NULL) return true; if(!root->left && !root->right) return true; if(isleft(root,root->val)==false || isright(root,root->val)==false) return false; if(root->left && root->right) return isValidBST(root->left)&&isValidBST(root->right); if(root->left && !root->right) return isValidBST(root->left); if(!root->left && root->right) return isValidBST(root->right); }
Validate Binary Search Tree
最新推荐文章于 2021-01-26 17:17:22 发布