赞
踩
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ void find_max(struct TreeNode *root, int *val){ if(!root){ return; } if(root->val > *val){ *val = root->val; } find_max(root->left, val); find_max(root->right, val); } void find_min(struct TreeNode *root, int *val){ if(!root) return; if(root->val < *val) *val = root->val; find_min(root->left, val); find_min(root->right, val); } bool isValidBST(struct TreeNode* root){ int min = INT_MAX; int max = INT_MIN; if(!root || (!root->left && !root->right)){ return true; } find_max(root->left, &max); find_min(root->right, &min); printf("max = %d, min = %d \n", max, min); bool ret = true; if(root->right){ ret &= isValidBST(root->right) && root->val < min; if(!root->left) return ret; } if(root->left){ ret &= isValidBST(root->left) && root->val > max; if(!root->right) return ret; } return ret; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。