码迷,mamicode.com
首页 > 其他好文 > 详细

平衡二叉树判断

时间:2017-08-22 01:45:29      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:blank   getheight   算法   detail   math   结构   class   平衡二叉树   key   

 

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. }  

平衡二叉树判断

标签:blank   getheight   算法   detail   math   结构   class   平衡二叉树   key   

原文地址:http://www.cnblogs.com/joshsung/p/7407326.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!