数据结构-判断是不是平衡二叉树-java

1.题目

输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

2.题解

先求出以每个结点为根的树的高度,然后再判断,其实可以直接再求高度的同时,直接判断即可。
利用后序遍历:左子树、右子树、根节点,可以先递归到叶子节点,然后在回溯的过程中来判断是否满足条件。

3.代码

 public int depth(TreeNode root){
    
    
        if(root==null){
    
    
            return 0;
        }
        int t = depth(root.left);
        if(t==-1){
    
    return -1;}
        int w = depth(root.right);
        
        if(w==-1){
    
    return -1;}
        
        int a = Math.abs(t-w);
        if(a>1){
    
    return -1;}
        return Math.max(t,w)+1;
        
    }
    
    public boolean IsBalanced_Solution(TreeNode root) {
    
    
       return  depth(root)!=-1;
    }

猜你喜欢

转载自blog.csdn.net/qq_25064691/article/details/121365325