zoukankan      html  css  js  c++  java
  • 【数据结构】算法 Maximum Width of Binary Tree 二叉树最大宽度

    Maximum Width of Binary Tree 二叉树最大宽度

    二叉树的宽度:

    每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。

    输入:A = [3,4,5,1,2], B = [4,1]
    输出:true输入: 
    
               1
             /   
            3     2
           /        
          5   3     9 
    
    输出: 4
    解释: 最大值出现在树的第 3 层,宽度为 4 (5,3,null,9)。
     
    

    思路

    利用层序遍历的方式,记录节点和序号。

    将每层的最右节点序号r - 最左节点的序号l。

    递归

    public class TwoTuple<A,B> {
            public final A first;
    
            public final B second;
    
            public TwoTuple(A a, B b){
                first = a;
                second = b;
            }
        }
        public int widthOfBinaryTree(TreeNode root) {
    
            LinkedList<TwoTuple<TreeNode, Integer>> q = new LinkedList<>();
            q.offer(new TwoTuple<>(root,0));
            int ans = 0;
            while (!q.isEmpty()){
                int cnt = q.size();
                int l = q.peekFirst().second;
                int r=0;
                for (int i = 0; i < cnt; i++) {
                    TwoTuple<TreeNode, Integer> temp = q.peek();
                    r = temp.second -l;
                    if(temp.first.left!=null){
                        q.offer(new TwoTuple<>(temp.first.left,r*2));
                    }
                    if(temp.first.right!=null){
                        q.offer(new TwoTuple<>(temp.first.right,r*2+1));
                    }
                    q.poll();
                }
                ans = Math.max(ans,r+1);
            }
    
            return ans;
        }
    
    

    Tag

    tree

  • 相关阅读:
    Spring AOP 实现原理
    Spring Aop实现方式总结
    Spring Aop重要概念介绍及应用实例结合分析
    Spring Aop
    常见的排序算法
    MINA2.0原理
    Java和Tomcat类加载机制
    Java 8 新特性概述
    Java类加载机制深度分析
    jetty之建立多Connector
  • 原文地址:https://www.cnblogs.com/dreamtaker/p/14670909.html
Copyright © 2011-2022 走看看