题目: 平衡二叉树
题号:110
难易程度:简单
题面:
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
示例1
输入:root = [3,9,20,null,null,15,7]
输出:true
示例二:
输入:root = [1,2,2,3,3,null,null,4,4]
输出:false
示例三:
输入:root = []
输出:true
题目意思:
即题面。
题解:
题解:通过计算出左右高度进行判断。
public class LeetCode110 {
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
public boolean isBalanced(TreeNode root) {
return height(root)>=0;
}
private int height(TreeNode tree){
if (tree == null){
return 0;
}
int leftHeight = height(tree.left);
int rightHeight = height(tree.right);
if (leftHeight ==-1 || rightHeight==-1||Math.abs(leftHeight-rightHeight)>1){
return -1;
}else {
return Math.max(leftHeight ,rightHeight)+1;
}
}
}