问题描述:
如果某二叉树任意节点的左右子树的深度相差不能超过1,那么它就是一颗平衡二叉树。请事先未完成的checkBalance函数,判断给定的输入节点是否为平衡二叉树。
bool checkBalance(Node* root)
class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int val){
this.val = val;
left = null;
right = null;
}
TreeNode(int val,TreeNode left,TreeNode right){
this.val = val;
this.left = left;
this.right = right;
}
}
public class Solution1 {
boolean checkBalance(TreeNode root) {
if(root == null)
return true;
int right = deep(root.right);
int left = deep(root.left);
if(right-left > 1 || left - right > 1)
return false;
return checkBalance(root.right) && checkBalance(root.left);
}
int deep(TreeNode root) {
if(root == null)
return 0;
int deepRight = deep(root.right);
int deepLeft = deep(root.left);
return 1 + (deepRight>deepLeft?deepRight:deepLeft);
}
public static void main(String[] args) {
TreeNode val_2 = new TreeNode(2);
TreeNode val_4 = new TreeNode(4);
TreeNode val_3 = new TreeNode(3,val_2,val_4);
//TreeNode root = new TreeNode(5,val_3,null);
TreeNode val_6 = new TreeNode(6);
TreeNode root = new TreeNode(5,val_3,val_6);
/*
TreeNode val_5 = new TreeNode(5);
TreeNode val_4 = new TreeNode(4,null,val_5);
TreeNode val_2 = new TreeNode(2,null,val_4);
TreeNode val_7 = new TreeNode(7);
TreeNode val_6 = new TreeNode(6,null,val_7);
TreeNode val_3 = new TreeNode(3,null,val_6);
TreeNode root = new TreeNode(1,val_2,val_3);
*/
Solution1 so1 = new Solution1();
System.out.println(so1.checkBalance(root));
}
}