• [Leetcode] Validate BST


    给一个Binary Tree,检查是不是Binary Search Tree. 即是否满足对每个节点,左子树的中的所有节点的值 < 当前节点的值 < 右子树所有节点的值。

    Solution #1, 用中序遍历。因为中序遍历是DFS的一种,Time complexity: O(N), space complexity: O(logN)

    public class Solution {
        
        int lastCheck = Integer.MIN_VALUE;
        
        public boolean isValidBST(TreeNode root){
            if(root == null)
                return true;
            
            if(!isValidBST(root.left)){
                return false;
            }
            
            if(lastCheck >= root.val){ // only 'Less than' is valid
                return false;
            }
            
            lastCheck = root.val;
            
            return isValidBST(root.right);
        }
    
    }

    Solution #2:

    为每个节点施加一个取值范围 (min, max). 从根节点一步一步往下递归的时候不断的更新(缩小)这个范围。

    class Solution{
        
        public boolean isValidBST(TreeNode node){
            return isValidBST(node, Integer.MAX_VALUE, Integer.MIN_VALUE);
        }
        
        private boolean isValidBST(TreeNode node, int max, int min){
            if(node == null)
                return true;
            
            if(min < node.val  && node.val < max){
                return isValidBST(node.left, node.val, min) &&
                        isValidBST(node.right, max, node.val);
            }else{
                return false;
            }
        }
        
    }
  • 相关阅读:
    NUnit
    Fxcop
    msdeploy命令实现远程部署时保留指定文件
    virtualBox 创建新虚拟机
    sharepoint项目部署
    执行批处理文件
    NCover
    配置Web DashBoard
    ccnet+ncover+fxcop+web deploy+mstest
    命令行部署Reporting Services项目
  • 原文地址:https://www.cnblogs.com/Antech/p/3705981.html
Copyright © 2020-2023  润新知