您的位置:首页 > 其它

二叉树深度计算及平衡二叉树的判定算法

2016-11-29 13:35 316 查看
首先是深度计算,采用递归算法,首先是递归退出条件,如果是一棵空树,深度为0,否则,二叉树的深度=左右子树较大的那个深度+1。

public int getDeep(TreeNode root) {
int res = 0;
if (root != null) {
int leftDeep = getDeep(root.getLeft());
int rightDeep = getDeep(root.getRight());
res = 1 + (leftDeep > rightDeep ? leftDeep : rightDeep);
}
return res;
}

然后是平衡二叉树的判定,仍然是采用递归,首先是递归退出条件,空树是平衡二叉树,然后是平衡二叉树的条件,左右子树深度之差不超过1,同时左右子树都是平衡二叉树。

public boolean isBalance(TreeNode root) {
if (root == null){
return true;
}
if (Math.abs(getDeep(root.getLeft()) - getDeep(root.getRight())) <= 1 && isBalance(root.getRight()) && isBalance(root.getLeft())){
return true;
}else{
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐