使用后序遍历
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
/**
Editor: hjw
Date: 2020/1/24 14:53
content: Balanced Binary Tree
*/
class Solution {
private boolean result = true;
public boolean isBalanced(TreeNode root)
{
maxHeight(root);
return result;
}
//用后序遍历,从叶子节点开始向根节点遍历,如果找到不满足平衡二叉树条件的子树,则不为平衡二叉树
public int maxHeight(TreeNode root)
{
if(root == null) return 0;
//左子树高度l,右子树高度r
int l = maxHeight(root.left);
int r = maxHeight(root.right);
//当不满足平衡二叉树的条件时,置result为false;
if(l-r>1||r-l>1) result = false;
//返回当前的树的高度
return (1 + Math.max(l,r));
}
}