leecode 树是否是平衡树 java

https://oj.leetcode.com/problems/validate-binary-search-tree/

1.中序遍历是否有序

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    private int a=-(1<<31);
  
    public boolean isValidBST(TreeNode root) {
        
        
      return middle(root);
       
        
    }
    public boolean middle(TreeNode root)
    {
        if(root==null) return true;
        if(!middle(root.left)) return false;
        if(root.val<=a) 
        {
            return false;
        
        }
        
        a=root.val;
        return middle(root.right);
        
        
    }
}

  2.记住每个节点的范围 开始时候(min,max)设为int最大,最小,然后在左子树上范围为(min, root.val) 判断节点是否在范围;

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public boolean isValidBST(TreeNode root) {
        
        
        int min=-(1<<31);
        int max=1<<31-1;
       return isValid(root,min,max);
        
        
    }
    public boolean isValid(TreeNode root,int min,int max)
    {
        if(root==null) return true;
        if(root.val>min&&root.val<max)
        {
            return isValid(root.left,min,root.val)&&isValid(root.right,root.val,max);
            
        }
        return false;
        
        
    }
}

  

原文地址:https://www.cnblogs.com/hansongjiang/p/3817317.html