zoukankan      html  css  js  c++  java
  • LeetCode: Validate Binary Search Tree [098]

    【题目】

    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.

    confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.



    【题意】

        给定一棵二叉树,推断是不是合法的二叉搜索树


    【思路】

        依据二叉搜索树定义,递归推断就可以


    【代码】

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        
        bool isValid(TreeNode*root, int lowBound, int upBound){
            //每棵树取值都有上边界和下边界
            if(root==NULL)return true;
            //推断节点值是否在合法的取值区间内
            if(!(root->val>lowBound && root->val<upBound))return false;
            
            //推断左子树是否合法
            if(root->left){
                if(root->left->val >= root->val || !isValid(root->left, lowBound, root->val))return false;
            }
            //推断右子树
            if(root->right){
                if(root->right->val <= root->val || !isValid(root->right, root->val, upBound))return false;
            }
            
            return true;
        }
    
        bool isValidBST(TreeNode *root) {
            return isValid(root, INT_MIN, INT_MAX);
        }
    };


  • 相关阅读:
    ES6——Promise
    ES6——generator-yield
    ES6——generator
    JQuery——关于CDN(内容分发网络)
    关于JSON使用要注意的地方
    第7课
    第6课
    第5课
    第4课
    第3课
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7248966.html
Copyright © 2011-2022 走看看