如何判断一个树是平衡二叉树?

平衡二叉树

平衡二叉树的定义是每个节点的左子树和右子树高度相差不超过一
当有一个节点,不是平衡二叉树那么这个节点就不是平衡二叉树

package zuochengyun;

public class Code9BlanceTree {
    /*
     * 二叉树节点
     */
    public static class Node{
        private int value;
        private Node Left;
        private Node Right;
        public Node(int value) {

            this.value = value;
        }

    }
    /*
     * 定义一个结构
     */
    public static class IsB{
        private boolean isBT;
        private int h;
        public IsB(boolean isBT, int h) {

            this.isBT = isBT;
            this.h = h;
        }

    }
    public static IsB searchBlance(Node T) {
        if(T==null)
            return new IsB(true, 0);
         IsB IsbLeft=searchBlance(T.Left);
         if(IsbLeft.isBT==false) {
             return new IsB(false, 0);
         }
         IsB IsbRight=searchBlance(T.Right);
         if(IsbRight.isBT==false) {
             return new IsB(false, 0);
         } 
         //若果两个子树高度相差大于1?
         if(Math.abs(IsbLeft.h-IsbRight.h)>1)
             return new IsB(false, 0);
         return new IsB(true, Math.max(IsbLeft.h, IsbRight.h)+1);
    }
    public static void main(String[] args) {
        Node head = new Node(1);
        head.Left = new Node(2);
        head.Right = new Node(3);
        head.Left.Left = new Node(4);
        head.Left.Right = new Node(5);
        head.Right.Left = new Node(6);
        head.Right.Right = new Node(7);

        System.out.println(searchBlance(head).isBT);

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值