平衡二叉树
原创大约 1 分钟
题目:
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过 1,那么它就是一棵平衡二叉树。
示例
给定二叉树 [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回 true思考:
提示
判断平衡二叉树,最直接的一种方法,就是计算每个节点左右子树的高度,判断深度差
根节点为空直接返回 true
然后先判断根节点的左右子树高度差,小于等于 1 则为平衡二叉树,继续判断根节点的左右节点
否则直接返回 false
题解:
class Solution {
public boolean isBalanced(TreeNode root) {
if (root == null) return true;
return Math.abs(depth(root.left) - depth(root.right)) <=1 && isBalanced(root.left) && isBalanced(root.right);
}
private int depth(TreeNode root){
if (root == null) return 0;
return Math.max(depth(root.left),depth(root.right)) + 1;
}
}