101.(98)验证二叉搜索树

    技术2022-07-11  73

    题目描述:

    给定一个二叉树,判断其是否是一个有效的二叉搜索树。

    假设一个二叉搜索树具有如下特征:

    节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例 1:

    输入:     2    / \   1   3 输出: true示例 2:

    输入:     5    / \   1   4      / \     3   6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。

    代码:

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isValidBST(TreeNode* root) { if (root == NULL) return true; bool tag; tag = traversing(root->left, root->val,LONG_MIN); if (!tag) return false; tag = traversing(root->right, LONG_MAX, root->val); if (!tag) return false; return true; } bool traversing(TreeNode *root, long long boun_u,long long boun_l) { bool tag; if (root) { if (root->val >= boun_u || root->val <= boun_l) return false; tag = traversing(root->left, root->val,boun_l); if (!tag) return false; tag = traversing(root->right,boun_u,root->val); if (!tag) return false; } return true; } };

    执行效率:

    执行用时:16 ms, 在所有 C++ 提交中击败了69.87%的用户

    内存消耗:18 MB, 在所有 C++ 提交中击败了100.00%的用户

    Processed: 0.010, SQL: 9