平衡二叉树
2018-02-01 本文已影响0人
Hammy
题目:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路:
平衡二叉树的特点是左子树与右子树的高度相差不大于1,所以根据后序遍历先遍历左右子树的特别,结合二叉树的求深度的方法进行判断.
代码
/**
* Created by Hammy on 2018/2/1.
* 输入一棵二叉树,判断该二叉树是否是平衡二叉树.
* 平衡二叉树的要求是左子树和右子树的高度差不相差1
* 使用后续遍历,因为后续遍历在遍历的过程中左右子树深度已经遍历成功
*/
public class IsBalanced_Solution
{
private boolean flag = true;
public boolean isBalanced_Solution(TreeNode root){
TreeDepth(root);
return flag;
}
private int TreeDepth(TreeNode node){
if(node == null)
return 0;
int left = TreeDepth(node.left);
int right = TreeDepth(node.right);
if(Math.abs(left - right) > 1){
flag = false;
}
return (left > right)?left+1:right+1;
}
}