LeetCode 98. 验证二叉搜索树
原题链接
简单
作者:
orange0912
,
2022-02-14 12:52:19
,
所有人可见
,
阅读 224
y总dfs返回三个结果的方法,巧妙,注意右子树的最小值不能比根小的这种情况!!
class Solution {
public:
bool isValidBST(TreeNode* root)
{
if (root==NULL) return true;
return dfs(root)[0];
}
vector<int> dfs(TreeNode* root)
{
vector<int> ans({1,root->val,root->val});
if (root->left)
{
auto t=dfs(root->left);
if (!t[0]||t[2]>=root->val)//左子树的最大值比根节点还更大,不符合bst性质
ans[0]=0;
ans[1]=min(ans[1],t[1]);
ans[2]=max(ans[2],t[2]);
}
if (root->right)
{
auto t=dfs(root->right);
if (!t[0]||t[1]<=root->val)
ans[0]=0;
ans[1]=min(ans[1],t[1]);
ans[2]=max(ans[2],t[2]);
}
return ans;
}
};
求关注
求关注