题目
本题中一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
给定二叉树 [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回 true
解题:
平衡二叉树满足两个条件
- 它的左右子树皆平衡
- 左右子树的高度差不过超过1
代码未优化
class Solution {
public boolean isBalanced(TreeNode root) {
if(root == null){
return true;
}
boolean flag;
if(Math.abs(TreeDepth(root.left)-TreeDepth(root.right))>1){
flag = false;
}
else{
flag = true;
}
return isBalanced(root.left) && isBalanced(root.right) && flag;
}
public int TreeDepth(TreeNode root){
if(root == null){
return 0;
}
int leftTreeDepth = TreeDepth(root.left);
int rightTreeDepth = TreeDepth(root.right);
//返回左右子树中较大的那个值
return 1+(leftTreeDepth > rightTreeDepth ? leftTreeDepth : rightTreeDepth);
}
}