利用两个递归函数,第一个递归函数是用来求当前结点的左右子树的高度;第二个递归函数是用来判断当前节点的左右子树是不是平衡二叉树。
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @return bool布尔型 */ public boolean isBalanced (TreeNode root) { // write code here if(root==null) return true; if(Math.abs(isB(root.left)-isB(root.right)) > 1) return false; return isBalanced(root.left)&&isBalanced(root.right); } public int isB(TreeNode root){ if(root==null) return 0; int l = isB(root.left); int r = isB(root.right); return Math.max(l,r) + 1; } }