题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解题思路:
1、如果是空树,则是一颗平衡二叉树;
2、递归遍历左右子树,如果深度之差的绝对值大于1,返回-1;
3、否则返回树的深度,是一颗平衡二叉树
代码实现:
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
/*
解题思路:
1、如果是空树,则是一颗平衡二叉树;
2、递归遍历左右子树,如果深度之差的绝对值大于1,返回-1;
3、否则返回树的深度,是一颗平衡二叉树
*/
return TreeDepth(root)!=-1;
}
int TreeDepth(TreeNode root){
if(root==null){
return 0;
}
int leftDepth,rightDepth;
leftDepth = TreeDepth(root.left);
rightDepth = TreeDepth(root.right);
if(leftDepth == -1 || rightDepth == -1 || Math.abs(leftDepth-rightDepth) > 1){
return -1;
}else{
return (leftDepth>rightDepth?leftDepth:rightDepth)+1;
}
}
}
效率:
来源:CSDN
作者:遗忘的大城小事
链接:https://blog.csdn.net/qq_34449717/article/details/103882107