leet116. 每个节点的右向指针

2023-11-08

题目:

给定一个二叉树

    struct TreeLinkNode {
      TreeLinkNode *left;
      TreeLinkNode *right;
      TreeLinkNode *next;
    }

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

初始状态下,所有 next(下一个)指针 都被设置为 NULL

注意事项:

  • 您只能使用恒定的额外空间。
  • 你可以假设它是一棵完美二叉树(即所有叶子都在同一水平上,每个父节点有两个孩子)。

 

例如,鉴于以下完美二叉树,

         1
       /  \
      2    3
     / \  / \
    4  5  6  7

调用你的函数后,该树应该变成这样:

         1 -> NULL
       /  \
      2 -> 3 -> NULL
     / \  / \
    4->5->6->7 -> NULL

分析:

  1. 采用BFS遍历,每一层遍历后,遍历节点列表,列表中前一节点next指针指向后一节点

代码:

class Solution:
    # @param root, a tree link node
    # @return nothing
    def connect(self, root):

        nodes = [root]
        while nodes:
            temp = []
            for x in nodes:
                if x:
                    if x.left: temp.append(x.left)
                    if x.right: temp.append(x.right)
            for i,y in enumerate(temp[:-1]):
                y.next = temp[i + 1]
            nodes = temp

思考:


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leet116. 每个节点的右向指针 的相关文章

  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • 如何正确地将 MIDI 刻度转换为毫秒?

    我正在尝试将 MIDI 刻度 增量时间转换为毫秒 并且已经找到了一些有用的资源 MIDI Delta 时间刻度到秒 http www lastrayofhope co uk 2009 12 23 midi delta time ticks
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 从零开始的 numpy 形状意味着什么

    好的 我发现数组的形状中可以包含 0 对于将 0 作为唯一维度的情况 这对我来说是有意义的 它是一个空数组 np zeros 0 但如果你有这样的情况 np zeros 0 100 让我很困惑 为什么这么定义呢 据我所知 这只是表达空数组的
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

    theano base compiledir指编译后的文件存放的目录 有没有办法可以永久设置theano base compiledir到不同的位置 也许通过修改一些内部 Theano 文件的内容 http deeplearning net
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 如何解决使用 Spark 从 S3 重新分区大量数据时从内存中逐出缓存的表分区元数据的问题?

    在尝试从 S3 重新分区数据帧时 我收到一个一般错误 Caused by org apache spark SparkException Job aborted due to stage failure Task 33 in stage 1
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 迭代 my_dict.keys() 并修改字典中的值是否会使迭代器失效?

    我的例子是这样的 for my key in my dict keys my dict my key mutate 上述代码的行为是否已定义 假设my dict是一本字典并且mutate是一个改变其对象的方法 我担心的是 改变字典中的值可能
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • 设计模式C++学习笔记之一(Strategy策略模式)

    http www cnblogs com wanggary archive 2011 04 07 2008796 html 无意中 从网上下到一本电子书 24种设计模式介绍与6大设计原则 很好奇这里有24种设计模式 印象中GOF写的 设计模
  • CTFSHOW网络迷踪-低碳环保

    记录一个解过的一道OSINT题目 低碳环保 题目来源 CTFshow 题目 解题 先下载附件 得到如图 首先尝试百度识图 但是识别不到 然后我看到右边建筑上方有 奉献清洁能源 几个红字 尝试搜索 搜索到了各种公司 还是没头绪 但是经过观察
  • 租车骑绿岛【C语言】

    租车骑绿岛 部门组织绿岛骑行团建活动 租用公共双人自行车 每辆自行车最多坐两人 最大载重m 给出部门每个人的体重 请问最多需要租用多少双人自行车 输入描述 第一行两个数字m n 分别代表自行车限重 部门总人数 第二行 n个数字 代表每个人的
  • JPA freemaker动态的拼接SQL

    spring data jpa extra https github com slyak spring data jpa extra spring data jpa template 项目地址 https gitee com silentw
  • cJSON解析JSON字符串

    一 为何选择cJSON 我们在使用JSON格式时 如果只是处理简单的协议 可以依据JSON格式 通过对字符串的操作来进行解析与创建 然而随着协议逐渐复杂起来 经常会遇到一些未考虑周全的地方 需要进一步的完善解析方法 此时 使用比较完善的JS
  • <>读书笔记

    lt
  • MySQL+jdbc理论考试【无答案】

    单选 共15题 每题2分 共30分 1 下面关于mysql的说法正确的是 A 默认的端口号是1521 B 默认的端口号是80 C 默认的端口号是3306 D 默认的端口号是443 2 下面排序的说法正确的是 A 默认是升序排序 B asc是
  • Hbuild点击发行,没有反应

    根目录下有 manifest json pages json 等等 才可以打包 换句话说 打开uniapp的文件时 要打开目录下有manifest json pages json的文件 文件上层不要再套一层文件
  • Linux内核移植

    目录 创建VSCode 工程 NXP官方开发板Linux 内核编译 修改顶层Makefile 配置并编译Linux内核 生成zImage和 dtb Linux 内核启动测试 根文件系统缺失错误 在Linux中添加自己的开发板 添加开发板默认
  • matlab仿真gmid电路,bandgap电路稳定性仿真---频响、相位裕度、环路增益

    仿真需要对原理图稍作修改 需在运放的闭环路径中加入iprobe元件 电路中存在两个反馈电路 一个正反馈 如图1组成路径 一个负反馈 如图2组成路径 两个反馈都经过了运放的输出端 故我这儿加在了输出端 可以同时仿真出两个反馈环路的频率响应 环
  • spring boot2整合kafka及遇到Exception thrown when sending a message with key='null'问题

    spring boot2整合kafka及遇到Exception thrown when sending a message with key null 问题 最近在学习spring boot2和kafka 就用学着使用spring boot
  • SpringBoot之CommandLineRunner接口和ApplicationRunner接口

    我们在开发中可能会有这样的情景 需要在容器启动的时候执行一些内容 比如读取配置文件 数据库连接之类的 SpringBoot给我们提供了两个接口来帮助我们实现这种需求 这两个接口分别为CommandLineRunner和Application
  • SQL技巧:如何统计博客每天的总点击量和每天的总点击人数

    最近由于工作安排 需要统计一篇火爆的博客每天的总点击量和每天的总点击人数 其实主要考验的就是编写SQL的能力 这里我们需要用到 GROUP BY 和 COUNT关键字 关于这2个关键字的用法 网上有很多 这里不再赘述 分组统计每天的总点击量
  • Qt之QtSoapHttpTransport 访问WebService

    简述 Web Service技术 能使得运行在不同机器上的不同应用无须借助附加的 专门的第三方软件或硬件就可相互交换数据或集成 依据Web Service规范实施的应用之间 无论它们所使用的语言 平台或内部协议是什么 都可以相互交换数据 Q
  • win10 安装mingw 使用makefile

    下载了一个新代码 里面有 h c 和 Makefile文件 说明文件中写道先编译 compiling Type make in a shell 在控制台上输入make 首先win r打开控制台 输入cmd 输入e 回车 cd github
  • mybatis查询返回空,sql数据库执行有数据

    需要编写一个统计功能 在Navicat Premium里调整好sql 然后编写后台代码 controller service serviceImpl dao 在serviceImpl 上添加 Service 注解 在dao 添加 Repos
  • 【测试 3】三、软件测试方法

    4 软件测试方法 包括白盒测试 灰盒测试 黑盒测试 静态测试 动态测试 手动测试 自动测试等 学习目标 熟悉白盒测试方法 掌握黑盒测试方法 掌握黑盒测试用例设计的方法 等价类划分法 边界值分析法 因果 图分析法 判定表分析法 正交试验法等
  • 图像特征提取三大算法:HOG特征,LBP特征,Haar特征

    一 HOG特征 from http dataunion org 20584 html 1 HOG特征 方向梯度直方图 Histogram of Oriented Gradient HOG 特征是一种在计算机视觉和图像处理中用来进行物体检测的
  • Intellij IDEA运行报Command line is too long的解决办法

    报错信息大概如下 Error running xxx Command line is too long Shorten command line for xxx or also for Application default configu
  • leet116. 每个节点的右向指针

    题目 给定一个二叉树 struct TreeLinkNode TreeLinkNode left TreeLinkNode right TreeLinkNode next 填充他的每个 next 下一个 指针 让这个指针指向其下一个右侧节点