您的位置:首页 > 其它

leetcode--BalancedBinaryTree

2015-06-12 09:36 447 查看
平衡二叉树:

左右子树深度差的绝对值不大于一,且左右子树为平衡二叉树。

/**
* Created by marsares on 15/6/12.
*/
public class BalancedBinaryTree {
boolean isBalanced=true;
public boolean isBalanced(TreeNode root) {
if(root==null)return true;
getDepth(root);
return isBalanced;
}
private int getDepth(TreeNode root){
if(root.left==null&&root.right==null)return 1;
else if(root.left==null){
int rightDepth=getDepth(root.right);
if(rightDepth>1)isBalanced=false;
return rightDepth+1;
}
else if(root.right==null){
int leftDepth=getDepth(root.left);
if(leftDepth>1)isBalanced=false;
return leftDepth+1;
}
else{
int leftDepth=getDepth(root.left);
int rightDepth=getDepth(root.right);
if(leftDepth-rightDepth>1||leftDepth-rightDepth<-1)isBalanced=false;
return max(leftDepth,rightDepth)+1;
}
}
private int max(int a,int b){
return (a<b)?b:a;
}
public static void main(String[]args){
TreeNode t1=new TreeNode(5);
TreeNode t2=new TreeNode(3);
TreeNode t3=new TreeNode(10);
TreeNode t4=new TreeNode(2);
TreeNode t5=new TreeNode(1);
TreeNode t6=new TreeNode(4);
TreeNode t7=new TreeNode(7);
t1.left=t2;
t1.right=t3;
t2.left=t4;
t2.right=t6;
t4.left=t5;
t3.left=t7;
BalancedBinaryTree bbt=new BalancedBinaryTree();
System.out.println(bbt.isBalanced(t1));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息