• 如何判断一颗二叉树完满二插树


    方式一:容易理解但麻烦的做法

    1、先写一个函数统计整个二叉树的最大深度(最大层数) l

    2、再写一个函数去统计整个二叉树的节点个数 N

    3、满二叉树满足N=2l-1

    方式二:树型DP ---递归套路解决 

    package Algorithms.tree;
    
    public class IsFullTree {
    
        public static class Node {
            public int value;
            public Node left;
            public Node right;
    
            public Node(int data) {
                this.value = data;
            }
        }
    
        //主函数
        public static boolean isFullTree(Node head) {
            if (head == null) {
                return true;
            }
            Info data = process(head);
            System.out.println("树的层数为:"+data.height+"  树的节点数为:"+data.nodes);
            return data.nodes == ((1 << data.height) - 1);
        }
    
        //定义返回值类型:返回当前树的高度和节点个数
        public static class Info {
            public int height;
            public int nodes;
    
            public Info(int h, int n) {
                height = h;
                nodes = n;
            }
        }
    
        public static Info process(Node x) {
            if (x == null) {
                return new Info(0, 0);
            }
    
            Info leftDate = process(x.left);
            Info rightData = process(x.right);
    
            int height = Math.max(leftDate.height, rightData.height) + 1;
            int nodes = leftDate.nodes + rightData.nodes + 1;
    
            return new Info(height, nodes);
        }
    
        //测试
        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("是否为满二叉树:"+isFullTree(head));
        }
    }
    
    /**
     * 树的层数为:3  树的节点数为:7
     * 是否为满二叉树:true
     */
     
  • 相关阅读:
    css
    css笔记
    css笔记
    echarts
    css笔记
    跨域
    JS案例
    html2canvas
    echarts
    echarts
  • 原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/15132865.html
Copyright © 2020-2023  润新知