N39_判断该二叉树是否是平衡二叉树。

Posted kexiblog

tags:

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

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。
package new_offer;
/**
 * 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
 * @author Sonya
 *思路:
 *1、借鉴上题 求树的深度。但是效率不高 需要重复遍历结点多次。
 *2、后续遍历,记录每个depth 只需要遍历一次。
 */
public class N39_IsBalanced_Solution 

	public boolean IsBalanced_Solution(TreeNode root) 
        if(root==null) return true;
        int left=TreeDepth(root.left);
        int right=TreeDepth(root.right);
        int val=left-right;
        if(Math.abs(val)>1)return false;
        return IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right);
    	
	public int TreeDepth(TreeNode root) 
		if(root==null)return 0;
		int left=TreeDepth(root.left);
		int right=TreeDepth(root.right);
		if(left>right) return left+1;
		else return right+1;
        
    
	public boolean IsBalanced_Solution2(TreeNode root) 
		int dep = 0;
        return IsBalanced(root, dep);	
		
	
	public boolean IsBalanced(TreeNode root,int depth) 
		if(root==null) depth=0;return true;
		int left,right;
		left=right=0;
		if(IsBalanced(root.left,left)&&IsBalanced(root.right,right)) 
			int val=left-right;
	        if(Math.abs(val)>1)return false;
	        depth=(left>right?left:right)+1;
		
		return false;
	

	public static void main(String[] args) 
		// TODO Auto-generated method stub

	


  

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

《剑指offer》:[39-1]判断是否为平衡二叉树

算法输入一棵二叉树,判断该二叉树是否是平衡二叉树。

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

判断是否为平衡二叉树

39. 平衡二叉树

39平衡二叉树