题目:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路:
采用后续遍历,判断返回的左右子树的高度差是不是大于1。
代码实现:
public class Solution {
private int TreeDepth(TreeNode root) {
if(root==null)
return 0;
int l=TreeDepth(root.left);
//已经不平衡,不需要在进行递归
if(l==-1)
return -1;
int r=TreeDepth(root.right);
if(r==-1 || Math.abs(l-r)>1)
return -1;
return l>r?l+1:r+1;
}
public boolean IsBalanced_Solution(TreeNode root) {
return TreeDepth(root)!=-1;
}
}