/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isBalanced(TreeNode root) {
//递归出口
if(root == null) return true;
if(Math.abs(depth(root.left) - depth(root.right)) > 1){//如果左子树和右子树的高度差的绝对值大于1,则不满足,直接跳出
return false;
}
//递归
//a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees
//of 【every node】 never differ by more than 1. ,所以每一个子树都要判断,有了递归
return isBalanced(root.left) && isBalanced(root.right);//从上往下的,一点一点往下判断子树是否是高度平衡的
}
public int depth(TreeNode root){//用于求树的高度
if(root == null) return 0;
return Math.max(1 + depth(root.left), 1 + depth(root.right));
}
}
leetcode [Balanced Binary Tree]//待整理多种解法
最新推荐文章于 2020-12-23 00:38:11 发布