• 98. Validate Binary Search Tree


    这是leetcode邮件推送的题目,bug-free的代码还是需要debug一段时间的

    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.

    Example 1:

    Input:
        2
       / 
      1   3
    Output: true
    

    Example 2:

        5
       / 
      1   4
         / 
        3   6
    Output: false
    Explanation: The input is: [5,1,4,null,null,3,6]. The root node's value
                 is 5 but its right child's value is 4.

    注意指针的引用 TreeNode* &pre
    /**
     * 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 {
    private:
        bool validate(TreeNode* root,TreeNode* &pre){
            if(root==nullptr)
                return true;
            //cout<<"root->val: "<<root->val<<endl;
            if(!validate(root->left,pre))
                return false;
            if(pre!=nullptr && (pre->val>=root->val))
                return false;
            pre=root; 
            
            return validate(root->right,pre);
            
        }
    public:
        bool isValidBST(TreeNode* root) {
            TreeNode* pre=nullptr;
            return validate(root,pre); 
        }
    };

    python代码

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def isValidBST(self, root, largerThan=float('-inf'), lessThan=float('inf')):
            """
            :type root: TreeNode
            :rtype: bool
            """
            if not root:
                return True
            if root.val <= largerThan or root.val >= lessThan:
                return False
    
            return self.isValidBST( root.left, largerThan, min(lessThan, root.val)) and 
                   self.isValidBST(root.right, max(largerThan, root.val), lessThan)
                      
  • 相关阅读:
    获取ArcMap窗口句柄,通过WinAPI获取工作空间中点击要素的系统桌面坐标实现窗体跟随
    ArcGis Go to XY功能代码C#
    Python入门第二篇:基础语法
    python入门第一篇:python语言简介
    Robotium结果的收集和失败重跑
    adb问题整理
    adb pull 与 push
    Monkey测试的参数
    Linux主要命令
    命令行启动应用的几种常见类型
  • 原文地址:https://www.cnblogs.com/learning-c/p/9280368.html
Copyright © 2020-2023  润新知