平衡二叉树的判断
2017-06-04 13:32
99 查看
public boolean isBlance(TreeNode root) {
boolean []result=new boolean[1];
result[0]=true;
int level=1;
getHeight(root,level,result);
return result[0];
}
//返回树的最大深度
public int getHeight(TreeNode root,int level,boolean [] result){
if(root==null){//如果根节点为空,直接返回树的高度,且该树为空,是平衡二叉树
return level;
}
//遍历左子树,
int LeftHeight=getHeight(root.left,level+1,result);
//如果左子树不是平衡二叉树,则直接返回
if(!result[0]){
return level;
}
//遍历右子树
int RightHeight=getHeight(root.right,level+1,result);
//如果右子树不是平衡二叉树,则直接返回
if(!result[0]){
return level;
}
//通过比较左右子树的深度,如果他们的深度差大于1,则说明不是平衡二叉树,直接返回
if(Math.abs(LeftHeight-RightHeight)>1){
result[0]=false;
}
//返回深度最大的那个子树
return Math.max(LeftHeight,RightHeight);
}
boolean []result=new boolean[1];
result[0]=true;
int level=1;
getHeight(root,level,result);
return result[0];
}
//返回树的最大深度
public int getHeight(TreeNode root,int level,boolean [] result){
if(root==null){//如果根节点为空,直接返回树的高度,且该树为空,是平衡二叉树
return level;
}
//遍历左子树,
int LeftHeight=getHeight(root.left,level+1,result);
//如果左子树不是平衡二叉树,则直接返回
if(!result[0]){
return level;
}
//遍历右子树
int RightHeight=getHeight(root.right,level+1,result);
//如果右子树不是平衡二叉树,则直接返回
if(!result[0]){
return level;
}
//通过比较左右子树的深度,如果他们的深度差大于1,则说明不是平衡二叉树,直接返回
if(Math.abs(LeftHeight-RightHeight)>1){
result[0]=false;
}
//返回深度最大的那个子树
return Math.max(LeftHeight,RightHeight);
}
相关文章推荐
- 平衡二叉树的判断
- 判断是否为平衡二叉树
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- 剑指offer:判断二叉树是不是平衡二叉树(java)
- 面试题39(2). 判断是否为平衡二叉树
- leetcode 110. Balanced Binary Tree(平衡二叉树的判断) DFS深度优先遍历
- 剑指offer—关于判断二叉树是否为平衡二叉树
- 判断一棵二叉树是否平衡二叉树
- 平衡二叉树的判断
- 判断是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断二叉树是否是平衡二叉树
- 剑指offer 面试题39 求二叉树深度|判断是否为平衡二叉树
- 剑指 offer代码解析——面试题39判断平衡二叉树
- 判断一棵树是否为平衡二叉树的算法
- 二叉树判断(相同、分层遍历、平衡二叉树)
- 判断二叉树是不是平衡二叉树
- 每日一题之判断一棵二叉树是否是平衡二叉树以及求一颗二叉树的镜像
- 判断一个二叉树是否是平衡二叉树 Cracking the coding interview 4.1
- 二叉树问题---判断二叉树是否为平衡二叉树