题目:balanced-binary-tree
判断一棵二叉树是否为平衡二叉树,即二叉树的每个结点的两棵子树的高度差不大于一。
后序遍历二叉树,每遍历一个节点判断时候满足平衡条件,并存储该节点深度。
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isBalanced(TreeNode root) {
int[]deepth={0};//存储该节点的深度;
return isBalanced(root,deepth);
}
public boolean isBalanced(TreeNode root,int[]deepth)
{
if(root == null)
return true;
int []left={0};
int []right={0};
if(isBalanced(root.left,left)&&isBalanced(root.right,right))//判断条件的时候一定要仔细,不能随便return
{
if(Math.abs(left[0]-right[0])<=1)
{
deepth[0]=left[0]>right[0]?left[0]+1:right[0]+1;//该节点的深度公式,+1是精髓;
return true;
}
}
return false;
}