概述
描述:
给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。
样例
给出二叉树 A={3,9,20,#,#,15,7}
, B={3,#,20,15,7}
A) 3 B) 3
/
9 20 20
/ /
15 7 15 7
二叉树A是高度平衡的二叉树,但是B不是
算法实现:
public boolean isBalanced(TreeNode root) {
// write your code here
if(root==null){
return true;
}else{
return checkNode(root);
}
}
private boolean checkNode(TreeNode root){
//判断当前节点是否平衡
if(root==null){
return true;
}
//判断当前节点左子树是否平衡
if( !checkNode(root.left) ){
return false;
}
//判断当前节点右子树是否平衡
if( !checkNode(root.right) ){
return false;
}
int left = getDepth(root.left);
int right = getDepth(root.right);
if(Math.abs(left-right)>1){
return false;
}else{
return true;
}
}
//递归计算获取根节点为root的高度
private int getDepth(TreeNode root){
int left = 0;
int right = 0;
if( root == null ){
return 0;
}else{
left = 1+getDepth(root.left);
right = 1+getDepth(root.right);
}
if(left>right){
return left;
}else{
return right;
}
}
最后
以上就是缓慢航空为你收集整理的LinCode-第93题 平衡二叉树的全部内容,希望文章能够帮你解决LinCode-第93题 平衡二叉树所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复