借鉴了上一道题计算当前节点的深度的做法。采用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; }
}