首页 > 其他 > 详细

判断是否是满二叉树

时间:2020-01-30 15:23:21      阅读:103      评论:0      收藏:0      [点我收藏+]
    public static class Node {
        public int value;
        public Node left;
        public Node right;

        public Node(int data) {
            this.value = data;
        }
    }
    
    public static boolean isFull(Node head){
        ReturnData allInfo=process(head, 1);
        return ((1<<allInfo.level)-1==allINfo.nums;
    }
    public static class ReturnData{
        public int level;
        public int nums;
        public ReturnData(int l, int n){
            level=l;
            nums=n;
        }
    }
    public static ReturnData process(Node head, int level){
        if(head==null){
            return new ReturnData(level, 0);
        }
        ReturnData leftInfo = process(head.left, level+1);
        ReturnData rightInfo = process(head.right, level+1);
        int nums = leftInfo.nums + rightInfo.nums+1;
        int deep = Math.max(leftInfo.level,rightInfo.level);
        return new ReturnData(deep, nums);
    }
        public static class ReturnType {
        public boolean isBalanced;
        public int height;

        public ReturnType(boolean isB, int hei) {
            isBalanced = isB;
            height = hei;
        }
    }

 

判断是否是满二叉树

原文:https://www.cnblogs.com/zyqy/p/11114420.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!