借鉴了上一道题计算当前节点的深度的做法。采用BFS,遍历每一层节点,看每一个节点是否满足平衡性。

import java.util.LinkedList;
import java.util.Queue;
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if(root==null) return true;
Queue<treenode> queue = new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()) {
TreeNode temp = queue.poll();
if(!isBalance(temp)) return false;
if(temp.left!=null)queue.add(temp.left);
if(temp.right!=null)queue.add(temp.right);
}
return true;
}</treenode>

 private boolean isBalance(TreeNode root) {
     if(TreeDepth(root.left)-TreeDepth(root.right)>1||TreeDepth(root.left)-TreeDepth(root.right)<-1)  return false;
     else return true;
 }

 private int TreeDepth(TreeNode root) {
        if(root==null) return 0;
        return TreeDepth(root.left)>TreeDepth(root.right)?TreeDepth(root.left)+1:TreeDepth(root.right)+1;
    }

}