首页 > 代码库 > leecode 树是否是平衡树 java
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; }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。