• Validate Binary Search Tree [LeetCode]


    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.
     1     bool varifyBST(TreeNode * root, int * out_min, int * out_max) {
     2         if(root == NULL)
     3             return true;
     4         (*out_min) = root->val;
     5         (*out_max) = root->val;
     6         if(root->left == NULL && root->right == NULL)
     7             return true;
     8         
     9         int vmax = root->val;
    10         int vmin = root->val;
    11         if(root->left != NULL){
    12             bool ret = varifyBST(root->left, &vmin, &vmax);
    13             if(ret == false)
    14                 return false;
    15             if(vmax >= root->val)
    16                 return false;
    17             (*out_min) = min(vmin, root->val);
    18         }
    19         
    20         if(root->right != NULL){
    21             bool ret = varifyBST(root->right, &vmin, &vmax);
    22             if(ret == false)
    23                 return false;
    24             if(vmin <= root->val)
    25                 return false;
    26             (*out_max) = max(vmax, root->val);
    27         }
    28         return true;
    29     }
    30     
    31     bool isValidBST(TreeNode *root) {
    32         int vmax = 0;
    33         int vmin = 0;
    34         return varifyBST(root, &vmin, &vmax);
    35     }
  • 相关阅读:
    第九章
    第十章
    第八章
    第七章
    第六章
    第五章
    第四章
    第三章
    第二章
    第一章
  • 原文地址:https://www.cnblogs.com/guyufei/p/3443272.html
Copyright © 2020-2023  润新知