题目地址:https://leetcode.com/problems/balanced-binary-tree/
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 BalancedBinaryTree {
public int height(TreeNode root) {
if (root == null)
return 0;
return Math.max(height(root.left), height(root.right)) + 1;
}
public boolean isBalanced(TreeNode root) {
if (root == null)
return true;
if (Math.abs(height(root.left) - height(root.right)) > 1)
return false;
return isBalanced(root.left) && isBalanced(root.right);
}
public static void main(String[] args) {
TreeNode node1 = new TreeNode(1);
TreeNode node2 = new TreeNode(1);
TreeNode node3 = new TreeNode(1);
TreeNode node4 = new TreeNode(1);
TreeNode node5 = new TreeNode(1);
TreeNode node6 = new TreeNode(1);
TreeNode node7 = new TreeNode(1);
/*node1.left = node2;
node1.right = node3;
node2.left = node4;
node2.right = node5;
node3.left = node6;
node3.right = node7;*/
node1.left = node2;
node2.left = node3;
node2.right = node4;
node1.right = node5;
BalancedBinaryTree balancedBinaryTree = new BalancedBinaryTree();
System.out.println(balancedBinaryTree.isBalanced(node1));
}
}