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));
        }
    
  • 相关阅读:
    立体图
    旅行家的预算
    洛谷P多米诺骨牌
    洛谷P2331最大子矩阵
    理想的正方形
    2015 ACM/ICPC Asia Regional Hefei Online Find a path
    Atcoder abc 138 F
    Atcoder abc 138 E String of Impurity
    zlb的8.19考试
    Atcoder abc 138
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/9378141.html
Copyright © 2011-2022 走看看