题目链接: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.
Subscribe to see which companies asked this question
Discuss
判断一棵树是否是平衡二叉树。BST的递归定义:当一棵树的左右两棵子树的高度只差不超过1,那么该树是平衡二叉树。
用后根遍历求解。先计算两棵子树的高度差。
我的AC代码
public class BalancedBinaryTree { static boolean ok = true; public static void main(String[] args) { TreeNode n1 = new TreeNode(1); TreeNode n2 = new TreeNode(2); n1.left = n2; System.out.println(isBalanced(n1)); } public static boolean isBalanced(TreeNode root) { ok = true; dfs(root); return ok; } public static int dfs(TreeNode root) { if(root == null || !ok) return 0; int ha = dfs(root.left); int hb = dfs(root.right); if(Math.abs(ha - hb) > 1) ok = false; return Math.max(ha, hb) + 1; } }