首页 > 其他分享 >513. 找树左下角的值(中)

513. 找树左下角的值(中)

时间:2023-12-23 13:44:07浏览次数:26  
标签:cur 队列 找树 BFS 513 左下角 root 节点 append

目录

题目

  • 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

    假设二叉树中至少有一个节点。

题解:BFS

  • BFS,队列的最后一层的第一个结点
class Solution:
    def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
        q=[]# 存储待处理的节点
        q.append(root)# 将根节点添加到队列中
        while q:
            size=len(q)
            res=[]# 存储当前层的节点值
            for _ in range (size):
                cur=q.pop(0) # 从队列中取出当前节点
                if cur.left:
                    q.append(cur.left)# 将左子节点添加到队列中
                if cur.right:
                    q.append(cur.right) # 将右子节点添加到队列中
                res.append(cur.val)# 将当前节点的值添加到当前层的节点值列表中

        return res[0]# 返回最后一层的第一个节点的值

题解:BFS优化

  • 从右往左队列的最后一个元素
class Solution:
    def findBottomLeftValue(self, root: TreeNode) -> int:
        q = [root]
        while q:
            cur = q.pop(0)
            if cur.right:  # 先右后左
                q.append(cur.right)
            if cur.left:
                q.append(cur.left)
        return cur.val

标签:cur,队列,找树,BFS,513,左下角,root,节点,append
From: https://www.cnblogs.com/lushuang55/p/17923049.html

相关文章

  • P5513 [CEOI2013] Board
    NOIP模拟赛原题,赛时没切。我们可以先考虑\(30\)分的部分分怎么打,\(n\le50\)。对于每一个点去维护两个信息\(pos\)和\(depth\)分别表示当前这个点所在位置的编号是多少以及它在第几层,我们从两个点最后的状态往回考虑。然后用一个贪心的思想,深度大的点一定会先一直沿着父......
  • 【JavaSE】数据结构(树:二叉查找树、平衡二叉树、AVL树、红黑树)
    树度:每个节点的子节点数量树高:树的总层数根节点:入度为0的节点二叉树每个节点最多有两个子节点二叉查找树任意节点左子树上的节点都小于当前节点,右子树上的节点都大于当前节点平衡二叉树任意节点的左右子树的高度差不超过1AVL树AVL树是一种平衡二叉树,得名于其发明者的......
  • 19_找树左下角的值
    找树左下角的值给定一个二叉树的根节点root,请找出该二叉树的最底层最左边节点的值。假设二叉树中至少有一个节点。示例1:输入:root=[2,1,3]输出:1示例2:输入:[1,2,3,4,null,5,6,null,null,7]输出:7【思路】迭代法:层序遍历只需要记录最后一行第一个节点......
  • P5132 Cozy Glow之拯救小马国
    每个关联值只会在先拿的神器那里被算到一次,那下界就是每个关联值与法力较小的神器法力值的乘积之和。按法力值从小到大取神器就可以取到下界。但由于出题人过于粗心,导致矩阵不对称正确的是左下角的半个,而且最后可能缺失若干个数,并且缺失的数等于最后输入的那个数。所以需要使用......
  • P5513 [CEOI2013] Board CWOI1114C
    70分做法非常容易想到,使用高精度对经过的点编号,令\(pos\)为点的编号,初始为\(1\),则:1:\(pos<<=1\)2:\(pos<<=1|1\)U:\(pos>>=1\)L:\(pos--\)R:\(pos++\)#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=1e5+5,i......
  • P3513 [POI2011] KON-Conspiracy
    题目描述:Byteotia的领土被占领了,国王Byteasar正在打算组织秘密抵抗运动。国王需要选一些人来进行这场运动,而这些人被分为两部分:一部分成为同谋者活动在被占领区域,另一部分是后勤组织在未被占领的领土上运转。但是这里出现了一个问题:后勤组织里的任意两人都必须是熟人,以促进合作......
  • 【可视化】基于Matlab实现图表视化相关矩阵,相关值显示为左下角的热图,使用颜色渐变来指
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 二叉查找树的实现C/C++
    二叉查找树是一种关键字有序存放的二叉树。在不含重复关键字的二叉查找树中,关键字"较小"的节点一定在关键字“较大”的节点的左子树中,“较小”一般可以由内值类型的<运算符来实现,或由重载了<运算符的类类型的<运算符来实现。“较小”的概念可以根据我们的需要有不同的实现。本文实......
  • 如何去掉桌面快捷方式左下角的小箭头(Win11)
    在对系统重命名之后,在快捷方式的左下角莫名的出现了小图标 如果想要去掉这个小图标(1)首先在桌面上创建一个txt文件(2)打开后输入指令regadd"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIcons"/v29/d"%systemroot%\system32\ima......
  • Word文档中左下角小横线无法删除?
    编辑完文档发现左下角有一个怎么都删不掉的小横线?解决方法选择上方工具栏中的替换,或者快捷键Ctrl+h打开替换弹窗后,查找内容中输入^f,点击替换即可成功删除那条可恶的小横线......