Question:输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解:首先判断树根是否为空,如果为空,则即为平衡二叉树,如不为空,则判断该根节点的左子树与右子树的高度差的绝对值是否大于1,如为真,则该二叉树不是平衡二叉树,否则递归遍历每个结点的左、右子树,若所有结点的左右子树的高度差的绝对值都不大于1,则该树即为平衡而二叉树
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if (root == null)
return true;
if (Math.abs(getHeight(root.left) - getHeight(root.right)) > 1)
return false;
return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
//此处if语句代码也可写成下面一行代码,但可读性不太好
//return Math.abs(maxDepth(root.left) - maxDepth(root.right)) <= 1 &&IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
}
public int getHeight(TreeNode root) {
if (root == null)
return 0;
int lDepth=getHeight(root.left);