
详细思路
递归难点在于dfs函数、参数、返回值的定义和返回的时机(边界返回,提前返回,最后返回)
dfs,有上界up和下界low,判断左右子树是否超出up和low,左子树的up是root->val,右子树的low是root->val
精确定义
dfs判断root树是否在up和low之内,如果是空就是true,如果不满足提前返回,最后返回
class Solution { public: bool isValidBST(TreeNode* root) { return dfs(root,LONG_MAX,LONG_MIN); } bool dfs(TreeNode*root,long long up,long long low){ if(!root)return true; if(root->val>=up||root->val<=low)return false; return dfs(root->left,root->val,low)&&dfs(root->right,up,root->val); } }; 踩过的坑 return dfs(root,LONG_MAX,LONG_MIN);
浙公网安备 33010602011771号