首页 > 其他分享 >662. 二叉树最大宽度

662. 二叉树最大宽度

时间:2024-09-24 15:12:13浏览次数:1  
标签:node 662 宽度 二叉树 answer new 节点

题目链接 662. 二叉树最大宽度
思路 BFS+层次遍历
题解链接 官方题解
关键点 与传统层次遍历的差异点:为节点进行编码,最大宽度为队列中最后节点最初节点之间的节点数量
时间复杂度 \(O(n)\)
空间复杂度 \(O(n)\)

代码实现:

class Solution:
    def widthOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        answer = 1
        q = [(root, 1)]
        while q:
            answer = max(answer, 1 + q[-1][1] - q[0][1])
            new_q = []
            for node, index in q:
                if node.left: new_q.append((node.left, 2*index))
                if node.right: new_q.append((node.right, 2*index+1))
            q = new_q
        return answer

标签:node,662,宽度,二叉树,answer,new,节点
From: https://www.cnblogs.com/WrRan/p/18429193

相关文章

  • [Python手撕]二叉树的序列化和反序列化
    #Definitionforabinarytreenode.#classTreeNode(object):#def__init__(self,x):#self.val=x#self.left=None#self.right=NoneclassCodec:defserialize(self,root):defdfs(root):ifr......
  • [Python手撕]二叉树最大宽度
    #Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defwidthOfBinaryTree(self,root:Optional[......
  • 如何使用 Javascript 确定二叉树是否相同
    介绍这里相同意味着结构和值都处于相同的位置。为了实现这一点,我们需要使用dfs算法,这样它也会检查深度。使用bfs算法无法实现这一点。所以这里我使用有序遍历来得到结果classNode{constructor(data){this.left=null;this.right=null;t......
  • 数据结构:二叉树
    1.树的概念:树是一种非线性数据结构,用于表示层次关系。树由节点组成,每个节点包含一个值和指向其子节点的指针。树的特点是每个节点只能有一个父节点,但可以有多个子节点。树的基本术语:节点(Node):树的基本单位,可以存储数据。(下图中的圆圈代表一个节点)根节点(Root):树的最顶层节点,没......
  • 【C++二叉树】二叉树的前序遍历、中序遍历、后序遍历递归与非递归实现
    1.二叉树的前序遍历144.二叉树的前序遍历-力扣(LeetCode) 前序遍历方式:根-左子树-右子树。递归实现:要传一个子函数来实先递归,原因是原函数返回值为vector,在原函数迭代,返回值就难处理了。非递归(迭代)实现:递归实现非常简单,非递归呢?要用迭代实现,也就是循环:还是按照根-......
  • 【算法竞赛】二叉树和哈夫曼树
    树是非线性数据结构,它能很好地描述数据的层次关系。树这种结构的现实场景很常见,如文件目录、书本的目录就是典型的树形结构。二叉树是最常用的树形结构,特别适合编码,常常将一般的树转换为二叉树来处理。本节介绍二叉树的定义和存储。哈夫曼(Huffman)树是二叉树的一个......
  • (LeetCode 热题 100) 199. 二叉树的右视图(递归、深度优先搜索dfs)
    199.二叉树的右视图思路:递归每次都优先右边子树,然后才是左子树。/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}......
  • 数据结构:二叉树(2)
    ps:爆更第二期前言普通的树的实用价值比较小,将树更一步特殊化成二叉树,将获得更多的特殊性质。例如搜索二叉树,红黑树等。这篇博文主要介绍二叉树的基础知识,进阶版高级二叉树,后续会持续更新。二叉树的概念一棵二叉树是结点的一个有限集合,该集合:或者为空由一个根节点......
  • React.js CSS 窗口宽度
    窗口宽度窗口宽度的概念什么是窗口宽度窗口宽度是指浏览器窗口的水平宽度。在网页设计中,了解窗口宽度对于创建响应式布局非常重要。它决定了页面元素在不同屏幕尺寸下的显示方式。通过获取窗口宽度,开发者可以根据用户设备的屏幕大小来动态调整页面布局,以提供更好的用户体验。在Rea......
  • 【C++二叉树】105.从前序与中序遍历序列构造二叉树
    105.从前序与中序遍历序列构造二叉树-力扣(LeetCode)根据前序遍历和中序遍历构建二叉树前序遍历访问方式:根-左子树-右子树中序遍历访问方式:左子树-根-右子树思路分析:前序+中序可以构建一颗二叉树:前序遍历可以确定根,中序遍历可以确定左子树的中序区间和右子树的中序区......