题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
题解:
在求二叉树深度的基础上修改
中序遍历,从低向上,如果左右子树深度差大于1 ,直接返回,-1 是一个标记,说明不满足平衡条件。
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
return TreeDepth(root) != -1;
}
public int TreeDepth(TreeNode root) {
if(root==null){
return 0;
}
int left=TreeDepth(root.left);
if(left==-1){//剪枝
return -1;
}
int right=TreeDepth(root.right);
if(right==-1){//剪枝
return -1;
}
if(Math.abs(left-right)>1){
return -1;
}
return 1+(left>right?left:right);
}
}