给定一棵二叉树的头节点head,返回这颗二叉树是不是平衡二叉树

啥是平衡二叉树?

              树的根节点,左右子树高度相差不超过1

如何判断

               1 当前节点的左右节点如果是平衡二叉树,并且两个节点高度相差不超过1 那么当前节点也是平衡二叉树

                2 如果左右节点任意一个不是平衡二叉树,说明当前节点也不是平衡二叉树

Node节点关键值:

                1 当前节点是不是平衡二叉树

                2 当前节点树的深度

代码

package 算法.二叉树;

public class test2 {
    /**
     * 树节点
     */
    public static class Node {
        //1 当前节点是否是平衡二叉树
        public boolean  flag;
        //2 当前节点高度
        public int high;

        public int num;
        public Node left;
        public Node right;

        public Node(boolean flag, int high) {
            this.flag = flag;
            this.high = high;
        }
    }

    public static Node process(Node node){

        if (node == null) {
            return new Node(true,0);
        }
        Node l = process(node.left);
        Node r = process(node.right);
        // 1 判断是否是平衡二叉树
        node.flag = false;
        //如果两个子树都是平衡二叉树  并且相差小鱼等一 1 说明是平衡二叉树
        if (l.flag&&r.flag&&Math.abs(l.num- r.num)<=1) {
            node.flag = true;
        }
        // 2 计算高度
        node.high = Math.max(l.high, r.high)+1;
        return node;
        
    }
    public static void main(String[] args) {
            process(null);
    }
}

猜你喜欢

转载自blog.csdn.net/u010191034/article/details/121340109