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

京公网安备 11010502036488号