zoukankan      html  css  js  c++  java
  • 二叉树最大宽度 Maximum Width of Binary Tree

    2018-07-27 15:55:13

    问题描述:

    问题求解:

    题目中说明了最后的宽度计算其实是按照满二叉树来进行计算的,也就是说如果我们能够得到每层最左边的节点编号和最右边的节点编号,那么本题就可以进行解决了。

    另外,在如何编号的问题上,既然是满二叉树,那么编号的方式自然是父节点i,左子节点2 * i,右子节点2 * i + 1。

        public int widthOfBinaryTree(TreeNode root) {
            return helper(root, 0, 1, new ArrayList<Integer>(), new ArrayList<Integer>());
        }
    
        private int helper(TreeNode root, int layer, int index, List<Integer> begin, List<Integer> end) {
            if (root == null) return 0;
            if (begin.size() == layer) {
                begin.add(index);
                end.add(index);
            }
            else end.set(layer, index);
            int cur = end.get(layer) - begin.get(layer) + 1;
            int l = helper(root.left, layer + 1, 2 * index, begin, end);
            int r = helper(root.right, layer + 1, 2 * index + 1, begin, end);
            return Math.max(cur, Math.max(l, r));
        }
    
  • 相关阅读:
    .net core之上传文件的限制
    如何Telnet端口
    ES坑之logstash配置文件
    MySQL报错packets larger than max_allowed_packet are not allowed
    ES坑之安装
    ES坑之概述
    Git
    IDEA 搭建 maven(下)
    IDEA搭建maven(上)
    JDBC
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/9378141.html
Copyright © 2011-2022 走看看