描述:
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且左右子树都是平衡二叉树,就是这么简洁明快。
代码:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public boolean isBalanced(TreeNode root) { if(root==null) return true; if(root.left==null&&root.right==null) return true; int len=maxDepth(root.left)-maxDepth(root.right); if(Math.abs(len)<=1&&isBalanced(root.left)&&isBalanced(root.right)) return true; return false; } public int maxDepth(TreeNode root) { if(root==null) return 0; if(root.left==null&&root.right==null) return 1; int num1=maxDepth(root.left),num2=maxDepth(root.right); int num=(num1>=num2?num1:num2)+1; return num; } }
结果:
时间: 2024-10-27 13:09:56