美文网首页
判断一棵二叉树是否是平衡二叉树

判断一棵二叉树是否是平衡二叉树

作者: Ramsey16k | 来源:发表于2019-11-27 10:54 被阅读0次

思路:
递归方式判断,返回的信息应该有两个:
(1)这棵树是否是平衡的
(2)这棵树的高度为多少

public class IsBalancedTree{
    public static class Node {
        public int value;
        public Node left;
        public Node right;

        public Node(int data) {
            this.value = data;
        }
    }

    public static class ReturnData {
        public boolean isB; // 是否平衡
        public int h; // 高度

        public ReturnData(boolean isB, int h) {
            this.isB = isB;
            this.h = h;
        }
    }

    public static ReturnData process(Node head) {
        if (head == null) { // 空树是平衡的
            return new ReturnData(true, 0);
        }
        ReturnData leftData = process(head.left);
        if (!leftData.isB) { // 左子树不平衡,返回false
            return new ReturnData(false, 0);
        }
        ReturnData rightData = process(head.right);
        if (!rightData.isB) { // 右子树不平衡,返回false
            return new ReturnData(false, 0);
        }
        if (Math.abs(leftData.h - rightData.h) > 1) {
            //左子树和右子树的高度查大于1,返回false
            return new ReturnData(false, 0);
        }
        //节点的高度 = 左子树和右子树中较大的那个高度 + 1
        return new ReturnData(true, Math.max(leftData.h, rightData.h) + 1);
    }

    public static boolean isB(Node head){
        // 判断是否是平衡二叉树
        return process(head).isB;
    }

    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(isB(head));
    }
}

相关文章

  • 判断一个树是否是BST 求一棵平衡二叉树的最小深度 判断一棵二叉树是否高度平衡

  • 平衡二叉树

    题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。

  • 39、平衡二叉树

    题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。

  • 牛客-剑指0ffer-平衡二叉树

    题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。

  • 19.判断二叉平衡树

    题目 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 代码

  • 平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 平衡二叉树(Self-balancing binary ...

  • 剑指 offer:39、平衡二叉树

    39. 平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路: 平衡二叉树:Wiki:在...

  • 面试题:平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 知识点 平衡二叉树 Qiang的思路 平衡二叉树是指一个...

  • Leetcode题解 - Easy - 4

    110- 平衡二叉树 问题 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一...

  • Leetcode 110 平衡二叉树

    平衡二叉树 题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每...

网友评论

      本文标题:判断一棵二叉树是否是平衡二叉树

      本文链接:https://www.haomeiwen.com/subject/uavvwctx.html