image.png

思路

image.png

code

  1. public boolean isBalanced(TreeNode root) {
  2. //判断树的深度是否为-1 -1表示不平衡
  3. return depth(root)!=-1;
  4. }
  5. //递归求树的深度 这里用-1表示树不平衡 否则表示树的深度
  6. public int depth(TreeNode root){
  7. if(root==null) //如果到达了最后一层 返回深度为0
  8. return 0;
  9. int leftDep = depth(root.left); //递归计算左右子树深度
  10. int rightDep = depth(root.right);
  11. if(leftDep==-1||rightDep==-1) //有一个不平衡则返回不平衡
  12. return -1;
  13. //判断差值 如果<2说明平衡 返回深度 否则返回-1
  14. return Math.abs(leftDep-rightDep)<2?Math.max(leftDep,rightDep)+1:-1;
  15. }