剑指offer20 JZ79 判断是不是平衡二叉树
判断是不是平衡二叉树
https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=13&tqId=23250&ru=/exam/oj/ta&qru=/ta/coding-interviews/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D13%26type%3D13
我们都知道如何判断一棵二叉树是不是平衡二叉树,就是它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
- 左深度-右深度>1 不是平衡二叉树
- 求二叉树最大深度的变种
import java.util.*;
public class Solution {
boolean isBalanced = true;
public boolean IsBalanced_Solution(TreeNode root) {
if(root==null){
return true;
}
dfs(root);
return isBalanced;
}
public int dfs(TreeNode node){
if(node==null){
return 0;
}
int l=dfs(node.left);
int r=dfs(node.right);
//左-有<=1 为平衡
if(Math.abs(l-r)>1){
isBalanced = false;
}
return Math.max(l,r)+1;//求深度
}
}