039平衡二叉树
题目:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
平衡二叉树的定义是左右子树的长度不大于1
方法:递归法
思路:对二叉树从底部进行判断,一层一层算上来,遍历到一个节点,其左右子树已经遍历 依次自底向上判断,每个节点只需要遍历一次
代码:
boolean isBalanced = true;
public boolean IsBalanced_Solution(TreeNode root) {
depth(root);
return isBalanced;
}
public int depth(TreeNode root){
if (root==null) return 0;
int left =depth(root.left);
int right =depth(root.right);
if(Math.abs(left-right)>1){//判断左右子树的长度差值是否大于1
isBalanced=false;
}
return left>right?left+1:right+1;//如果左子树长度大于右子树则整个子树取的是左边的长度+1,反之右+1
}