平衡二叉树判断

Posted zhangxiaoyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平衡二叉树判断相关的知识,希望对你有一定的参考价值。

 

http://blog.csdn.net/qq_27703417/article/details/70960005

 

有一棵二叉树,请设计一个算法判断这棵二叉树是否为平衡二叉树。给定二叉树的根结点root,请返回一个bool值,代表这棵树是否为平衡二叉树。

 

  1. import java.util.*;  
  2. //判断一棵二叉树是否是平衡二叉树,使用递归,以子树的高度作为返回值  
  3. public class CheckBalance {  
  4.     public boolean check(TreeNode root) {  
  5.         //调用递归方法来判断是否是平衡的  
  6.         //如果返回-1表不平衡,如果返回一个具体的值,说明树平衡,返回的是树的高度值  
  7.         boolean result=this.getHeight(root)==-1?false:true;  
  8.         return result;  
  9.     }  
  10.     //这是一个递归的方法,用于返回一棵二叉树的高度,如果平衡返回高度,如果不平衡返回-1  
  11.     private int getHeight(TreeNode root){  
  12.         //基准情形  
  13.         if(root==null) return 0;  
  14.         //先求左子树的高度  
  15.         int leftHeight=this.getHeight(root.left);  
  16.         //判断左子树是否平衡,调用递归方法后总是认为这个方法已经全部执行完毕  
  17.         if(leftHeight==-1) return -1;  
  18.         //再求右子树的高度  
  19.         int rightHeight=this.getHeight(root.right);  
  20.         //判断右子树是否平衡  
  21.         if(rightHeight==-1) return -1;  
  22.         //判断高度差是否过大  
  23.         if(Math.abs(leftHeight-rightHeight)>1) return -1;  
  24.         //执行到此处说明二叉树平衡,返回此树的高度(子树较大值+1)  
  25.         return Math.max(leftHeight,rightHeight)+1;  
  26.     }  
  27. }  

以上是关于平衡二叉树判断的主要内容,如果未能解决你的问题,请参考以下文章

判断平衡二叉树

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

平衡二叉树的判断

平衡二叉树判断

剑指offer系列43---判断平衡二叉树

平衡二叉树