题目:
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
题意:给定一个二叉树,判定这个二叉树是否为平衡二叉树,代码如下:
1 public class Solution { 2 /* 3 定义一个函数,用来求得这个二叉树的高度,利用递归方法 4 */ 5 public int treeDepth(TreeNode root) 6 { 7 if(root == null) 8 { 9 return 0; 10 } 11 return 1+Math.max(treeDepth(root.left),treeDepth(root.right)); 12 } 13 /* 14 上文我已经提到,但凡是遇到关于二叉树的相关操作我们第一个想到的就是递归,而后是队列和栈。 15 */ 16 public boolean isBalanced(TreeNode root) { 17 if(root == null)//递归结束条件 18 { 19 return true; 20 } 21 int left = treeDepth(root.left);//计算左子树的高度 22 int right = treeDepth(root.right);//计算右子树的高度 23 /* 24 这个判断就是告诉我们以root为根节点的左右子树是平衡的, 25 而判断整个二叉树是否平衡,我们还要进行向下一层层的判断,这里就用到的了递归。 26 */ 27 if(Math.abs(left-right)<=1) 28 { 29 if(isBalanced(root.left) == true && isBalanced(root.right) == true) 30 { 31 return true; 32 } 33 } 34 return false; 35 } 36 }