- 题目描述:
- 示例:
- 解题思路:先计算每个节点的左右子树的深度(用之前刷过的的计算最大深度的方法:maxDepth),然后计算左右子树差的绝对值,看是否超过1.
- 解:
- class Solution {
- boolean flag=true;//默认是平衡二叉树
- public boolean isBalanced(TreeNode root) {
- maxDepth(root); //调用计算树的深度的方法
- return flag;
- }
- public int maxDepth(TreeNode root){
- if(root==null){//树为空,则深度为0
- return 0;
- }
- int leftDepth=maxDepth(root.left);//递归调用,计算二叉树每个节点的深度
- int rightDepth=maxDepth(root.right);//每计算出一个节点的左右子树的深度就进行判断
- //判断计算得到的节点的左右两个子树的高度差的绝对值是否超过1
- if(Math.abs(leftDepth-rightDepth)>1){//只要其中一个节点的左右两个子树的高度差的绝对值超1
- flag=false; //它就不是平衡二叉树
- }
- return Math.max(leftDepth,rightDepth)+1;//返回树的深度(每个节点的深度)
- }
- }
题目描述:
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。


