一、描述:
二、思路
平衡二叉树(Balanced Binary Tree):又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树;
通过每一棵左右子树的深度判断子树是否为平衡二叉树,只有当所有的子树是平衡二叉树时,才能得出整棵树是平衡二叉树;
故函数方法中有两种判断,1是空树?2左右两个子树的高度差的绝对值不超过1?
三、代码:
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public boolean isBalanced(TreeNode root) { 12 if(root==null){ 13 return true; 14 } 15 int left = depth(root.left); 16 int right = depth(root.right); 17 if(left+1<right || right+1<left){ 18 return false; 19 }else{ 20 return isBalanced(root.left)&&isBalanced(root.right); 21 } 22 } 23 24 public int depth(TreeNode root){ 25 if(root==null){ 26 return 0; 27 }else{ 28 int left = depth(root.left); 29 int right = depth(root.right); 30 return left<right?right+1:left+1; 31 } 32 } 33 }
时间: 2024-10-03 21:53:54