题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路:先判断是不是二叉搜索树,再判断高度是不是平衡,本题牛客网答案有问题,在这里只需要判断高度是否平衡就可以了,但实际上肯定要先判断是不是二叉搜索树。
import java.util.*;
public class Solution {
ArrayList<Integer> list=new ArrayList<>();
public boolean IsBalanced_Solution(TreeNode root) {
if(root==null || (root.left==null && root.right==null)){
return true;
}
inOrder(root);
for(int i=1; i<list.size(); i++){
if(list.get(i)<list.get(i-1)){
return false;
}
}
return isBalanced(root);
}
private boolean isBalanced(TreeNode root){
if(root!=null){
if(Math.abs(getDepth(root.left)-getDepth(root.right))>1){
return false;
}
else{
isBalanced(root.left);
isBalanced(root.right);
}
}
return true;
}
private void inOrder(TreeNode root){
if(root!=null){
inOrder(root.left);
list.add(root.val);
inOrder(root.right);
}
}
public int getDepth(TreeNode root){
if(root==null){
return 0;
}
if(getDepth(root.left)>getDepth(root.right)){
return getDepth(root.left)+1;
}
else{
return getDepth(root.right)+1;
}
}
}