分析
- 如果二叉树的每个节点的左子树和右子树的深度不大于1,它就是平衡二叉树。
- 先写一个求深度的函数,再对每一个节点判断,看该节点的左子树的深度和右子树的深度的差是否大于1
代码
package DlinkedList;
public class Problem26 {
public boolean IsBalanced_Solution(TreeNode root) {
if(root==null){
return true;
}
if((depth(root.left)-depth(root.right)>1)||(depth(root.left)-depth(root.right)<-1)){
return false;
}else{
return true&&IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right);
}
}
public int depth(TreeNode root){
if(root==null) return 0;
return Math.max(depth(root.left),depth(root.right))+1;
}
public static void main(String[] args) {
TreeNode A = new TreeNode(1);
TreeNode B= new TreeNode(2);
TreeNode C= new TreeNode(3);
TreeNode D= new TreeNode(4);
TreeNode E= new TreeNode(5);
TreeNode F= new TreeNode(3);
TreeNode G= new TreeNode(6);
TreeNode H= new TreeNode(7);
TreeNode I= new TreeNode(8);
A.left=B;
A.right=C;
B.left=D;
B.right=E;
D.right=H;
C.left=F;
C.right=G;
G.left=I;
Problem26 problem26 = new Problem26();
System.out.println(problem26.IsBalanced_Solution(A));
}
}