题目:给定一颗树,判断其是否为平衡二叉树(平衡二叉树的左右子树高度差不大于1)
算法:递归遍历二叉树的左右子树高度,记录最大高度差
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int maxDepthDiff = -1;
public boolean isBalanced(TreeNode root) {
TreeDepth(root);
return (maxDepthDiff <= 1);
}
/**
* find the difference for left child depth and right child depth
* @param root
* @return
*/
public int TreeDepth(TreeNode root) {
if (null == root) {
return 0;
}
int left = TreeDepth(root.left);
int right = TreeDepth(root.right);
int depthDiff = Math.abs(left-right);
if (maxDepthDiff < depthDiff) {
maxDepthDiff = depthDiff;
}
return (left > right ? left+1 : right+1);
}
}