题解 | #平衡二叉树#
平衡二叉树
http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
//遇见树 ---> 想递归
//思路是:将上一题中,求树的深度的方法利用到这里,先求出两棵子树的深度,然后相减取绝对值判断即可
if(root == null){
return true;
}
int left = TreeDepth(root.left);
int right = TreeDepth(root.right);
//return Math.abs(left-right) <= 1 ? true : false;
//虽然写成上面的也能通过,但上面的那行代码少考虑了左右子树也必须是平衡二叉树的情况
//所以正确的应写成下面的
return Math.abs(left-right) <= 1 && IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
}
//求一颗二叉树的深度的方法
private int TreeDepth(TreeNode root){
if(root==null){
return 0;
}
int leftVal = TreeDepth(root.left);
int rightVal = TreeDepth(root.right);
return ((leftVal > rightVal) ? leftVal : rightVal) + 1;
}}
查看13道真题和解析
睿联技术公司福利 62人发布