您的位置:首页 > 其它

树——判断是否为平衡二叉树

2016-05-10 20:52 239 查看
题目: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: