首页 > 其他分享 >116.+117. 填充每个节点的下一个右侧节点指针(Ⅰ+Ⅱ)(中)

116.+117. 填充每个节点的下一个右侧节点指针(Ⅰ+Ⅱ)(中)

时间:2023-12-25 10:15:33浏览次数:30  
标签:Node .+ cur next 117 二叉树 节点 指针

目录

题目

  • 给定一个 完美二叉树 (117的Ⅱ题不是完美二叉树,是二叉树,其余一样),其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:

struct Node {
int val;
Node *left;
Node *right;
Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。

初始状态下,所有 next 指针都被设置为 NULL。

题解:BFS

class Solution:
    def connect(self, root: 'Optional[Node]') -> 'Optional[Node]':
        #BFS遍历每一层的时候,队列头指向队尾,队尾元素指向空
        if not root:#如果根节点为空
            return None
        q=[root]#用列表做队列
        while q:
            size=len(q)
 
            for i in range (size):
                cur=q.pop(0)#弹出队头元素
                if i < size - 1:#当元素不是这一层的最后一个时
                    next_node = q[0]#存储下一个节点
                    cur.next=next_node#把当前节点的next指向下一个节点
                else:#当元素是这一层的最后一个时,指向空
                    cur.next=None
                if cur.left:#有左孩子加入队列
                    q.append(cur.left)
                if cur.right:#有右孩子加入队列
                    q.append(cur.right)
        return root#返回根节点

标签:Node,.+,cur,next,117,二叉树,节点,指针
From: https://www.cnblogs.com/lushuang55/p/17924620.html

相关文章

  • CF1178H
    cdqz两道题都很有意思啊!顺便是第一篇*3500题解。先考虑第一问。显然有单调性,所以可以二分。cdqz这是二分专题吗Lemma1:所有操作都在\(0\)和\(t\)时刻进行。Proof:这是若干个一次函数,最大或最小值都会在端点处取得。所以是显然的。接下来你就要使你在\(t\)时刻所拥有......
  • TDSQL集群扩容DB节点
    具体步骤见百度云盘:https://pan.baidu.com/s/1zMrjhckI2I4O1G1RzC09uQ提取码:h5mm。本文档适用于TDSQL(MYSQL版)和TDSQL(PG版)。内容如下:一、以下步骤在新增机器上面执行:1、检查audit服务(Mysql版本特有):systemctlstatusauditd,#如果存活则关闭:systemctlstopauditd&&systemc......
  • 如何使用深度学习技术探测代码逻辑死循环 —— 浪潮集团的“公开号CN117271314A”专利
    新闻链接:https://mbd.baidu.com/newspage/data/landingsuper?context={"nid"%3A"news_10054958188888757354"}&n_type=-1&p_from=-1国家专利局查询:https://pss-system.cponline.cnipa.gov.cn/conventionalSearch......
  • 243-layui 区域树xmSelect懒加载,且叶子节点有选择时,自动追溯父节点,并展开选中
    varregionData=[]; varurl=ctx+'/base/region/queryByAll'; varrtnRegion=admin.syncReq(url,{parentId:0}); regionData=rtnRegion.data; active.renderRegionData(regionData,regionId); varregionSel=xmSelect.render({ el:'#r......
  • ClickHouse单节点安装配置
    1、从宿主机/opt目录下将clickhouse开头的相关文件复制到容器Master中的/opt/module/clickhouse路径中(若路径不存在,则需新建),将全部解压命令复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;#从宿主机复制文件到容器Masterdockercp/opt/clickhouse......
  • 如何解决MySQL Workbench中的错误Error Code: 1175
    错误描述:在MySQLWorkbench8.0中练习SQL语句时,执行一条update语句,总是提示如下错误:ErrorCode:1175.YouareusingsafeupdatemodeandyoutriedtoupdateatablewithoutaWHEREthatusesaKEYcolumnTodisablesafemode,toggletheoptioninPreferences->SQ......
  • SQLserver AlwaysOn 提交模式与节点的可用性
    接上文:https://www.cnblogs.com/wy123/p/17905118.html,关于AlwaysOn主副本与辅助副本之间提交模式与安全故障转移的话题参考AlwaysOn属性面板中的信息1,主节点异步提交模式:如果主要副本配置为“异步提交模式” ,则从节点不管是同步或者异步,主节点提交事务都无须等待从节点(永远......
  • 代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N个节点、
    LeetCode24.两两交换链表中的节点题目链接: 24.两两交换链表中的节点提示:链表问题,首先用虚拟头节点,让链表节点的处理具有一致性!!! LeetCode19.删除链表的倒数第N个节点题目链接:19.删除链表的倒数第N个节点注意点:快慢指针,链表删除元素得找到该元素的前一个元素!!! LeetCode......
  • 代码随想录算法训练营第四天| LeetCode24. 两两交换链表中的节点、19.删除链表的倒数
     LeetCode24.两两交换链表中的节点●今日学习的文章链接和视频链接代码随想录(programmercarl.com)题目链接24.两两交换链表中的节点-力扣(LeetCode)●自己看到题目的第一想法主要是把这个过程想清楚,链表交换的题目主要想明白要动几个指针,指针改变的顺序也要注意,如果......
  • k8s集群从一千节点增加到五千台节点遇到的瓶颈
    Kubernetes自从1.6起便号称可以承载5000个以上的节点,但是从数十到5000的路上,难免会遇到问题。在kubernetes5000之路上的经验,包括遇到的问题、尝试解决问题以及找到真正的问题。1、问题一:1~500个节点之后问题:kubectl有时会出现timeout(p.s.kubectl-v=6可以显示所......