首页 > 其他分享 >力扣 662 https://leetcode.cn/problems/maximum-width-of-binary-tree/

力扣 662 https://leetcode.cn/problems/maximum-width-of-binary-tree/

时间:2023-05-27 22:22:58浏览次数:49  
标签:binary right cn temp int tree value queue left


需要了解树的顺序存储

如果是普通的二叉树 ,底层是用链表去连接的

如果是满二叉树,底层用的是数组去放的,而数组放的时候 会有索引对应 当前父节点是索引i,下一个左右节点就是2i,2i+1

利用满二叉树的索引特征

所以需要对每个节点进行一个索引赋值,赋值在队列中,队列用数组表示

核心代码如下

public int widthOfBinaryTreeBetter(TreeNode root) {
    Queue<Pair<TreeNode,Integer>> queue = new LinkedList<>();


    queue.add(new Pair<>(root,1));
    int res=0;
    while (!queue.isEmpty()){

        int size = queue.size();
        int left=-1;
        int right=-1;
        for (int i = 0; i < size; i++) {
            Pair<TreeNode, Integer> poll = queue.poll();
            Integer value = poll.getValue();
            if (left==-1){
                left=value;
            }
            right=value;

            TreeNode temp = poll.getKey();
            if (temp.left!=null){
                queue.add(new Pair<>(temp.left,value*2));
            }
            if (temp.right!=null){
                queue.add(new Pair<>(temp.right,value*2+1));
            }
            res=Math.max(right-left+1,res);
        }

    }
    return res;
}

 

标签:binary,right,cn,temp,int,tree,value,queue,left
From: https://www.cnblogs.com/gulilearn/p/17437467.html

相关文章

  • Paper Reading: Adaptive Neural Trees
    目录研究动机文章贡献自适应神经树模型拓扑与操作概率模型与推理优化实验结果模型性能消融实验可解释性细化阶段的影响自适应模型复杂度优点和创新点PaperReading是从个人角度进行的一些总结分享,受到个人关注点的侧重和实力所限,可能有理解不到位的地方。具体的细节还需要以原文......
  • 网安--Linux cnetos7相关操作
    1、修改静态网络配置文件vim/etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR、NETMASK等需要大写如果出现问题可以重启虚拟网卡2、centos修改yum源shift+insert粘贴1、yum源存放的地址 2、对旧的文件进行备份 3、替换yum源地址,换成阿里云的地址  3、Xs......
  • Cassandra中的MerkleTree反熵机制
    构建MerkleTreeCassandra是一个分布式数据库系统,它使用Merkle树来实现数据一致性和数据完整性的验证。在Cassandra中,每个节点都维护着自己的数据副本。为了确保数据的一致性和完整性,Cassandra使用Merkle树进行验证。Merkle树是一种树状结构,由哈希值构成,用于对数据块进......
  • 【无人机任务分配】基于合同网协议(CNP算法)实现多无人机具有时间窗口和优先级约束任务
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 107. Binary Tree Level Order Traversal II刷题笔记
    问题描述自底向上层序搜索python代码#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:deflevelOrd......
  • 102. Binary Tree Level Order Traversal刷题笔记
    考察二叉树的层序遍历问题描述leetcode代码:#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:deflev......
  • 94. Binary Tree Inorder Traversal刷题笔记
    问题描述中序遍历,用的是递归法,当然也可以用迭代法(栈)代码#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution......
  • 145. Binary Tree Postorder Traversal刷题笔记
    问题描述后序遍历代码:#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defpostorderTraversal(sel......
  • 144. Binary Tree Preorder Traversal刷题笔记
    问题描述前序遍历。注意嵌套函数里的list应该用append而不是+=来添加元素#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=right......
  • 897. Increasing Order Search Tree
    问题描述yield就是return返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。如果是迭代器则应该使用yieldfromclassTreeNode(object):def__init__(self,x):self.val=xself.left=Noneself.right=None#树生成代......