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));
        }
    
  • 相关阅读:
    git 常用命令
    PHP打印日志类
    如何从总账获取分类账信息
    AP -> GL 数据流动
    JDeveloper 速度慢问题
    JDeveloper 滚轮不受控制
    MyBatis 环境搭建
    初识 MyBatis
    Linux 中设置 MySQL 字符集为 UTF-8
    Linux 安装 MySQL 详解(rpm 包)
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/9378141.html
Copyright © 2011-2022 走看看