给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:

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

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

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

进阶:

  • 你只能使用常量级额外空间。
  • 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。

示例:

输入:root = [1,2,3,4,5,6,7]
输出:[1,#,2,3,#,4,5,6,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,'#' 标志着每一层的结束。

提示:

  • 树中节点的数量少于 4096
  • -1000 <= node.val <= 1000
class Solution:def connect(self,root:'Node')->'Node':if root and root.left:root.left.next = root.rightif root.next:root.right.next = root.next.leftelse:root.right.next = Noneself.connect(root.left)self.connect(root.right)return root

[leetcode] 117 填充每个节点的下一个右侧节点指针相关推荐

  1. 2.<tag-二叉树和层序遍历相关题>-lt.116. 填充每个节点的下一个右侧节点指针 + lt.117. 填充每个节点的下一个右侧节点指针 II 1

    lt.116. 填充每个节点的下一个右侧节点指针 [案例需求] [思路分析一, 迭代法] [代码实现] /* // Definition for a Node. class Node {public ...

  2. 力扣116. 填充每个节点的下一个右侧节点指针(C++,附思路)

    题目链接在这里: 116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/popu ...

  3. 二叉树:填充每个节点的下一个右侧节点指针(java)

    leetcode116:填充每个节点的下一个右侧节点指针 leetcode原题链接: 题目描述 递归解法一 递归方法二(效率更高) 二叉树专题 leetcode原题链接: 116题:填充每个节点的下一 ...

  4. leetcode116. 填充每个节点的下一个右侧节点指针

    116. 填充每个节点的下一个右侧节点指针 难度中等128 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node {int val;Node ...

  5. 116. 填充每个节点的下一个右侧节点指针

    2020-05-28 1.题目描述 填充每个节点的下一个右侧节点指针 2.题解 层次遍历即可 3.代码 /* // Definition for a Node. class Node { public ...

  6. 力扣 填充每个节点的下一个右侧节点指针

    填充每个节点的下一个右侧节点指针 题目描述 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node { int val; Node *left ...

  7. [leetcode-117]填充每个节点的下一个右侧节点指针 II

    (1 AC) 填充每个节点的下一个右侧节点指针 I是完美二叉树.这个是任意二叉树 给定一个二叉树 struct Node {int val;Node *left;Node *right;Node *n ...

  8. LeetCode 117. 填充每个节点的下一个右侧节点指针 II(递归循环)

    文章目录 1. 题目 2. 解题 2.1 递归 2.2 queue循环 2.3 利用next循环 1. 题目 填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找不到下一个右侧节点,则 ...

  9. 49. Leetcode 117. 填充每个节点的下一个右侧节点指针 II (二叉树-二叉树遍历)

    给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找不 ...

最新文章

  1. 边缘生——保研与考研到底如何抉择!
  2. mongo学习笔记(二):聚合,游标
  3. Deep learning with Python 学习笔记(9)
  4. SUSE LINUX系统文件句柄限制的修改
  5. 零零碎碎写的脚本(四)自动监控某系统服务状态并警报
  6. 基于Java JAAS表单的身份验证
  7. 初中英语语法(014)-现在完成时
  8. CentOS下Nginx+fastcgi+python3搭建web.py服务环境
  9. 2018优秀讲师排行榜出炉,将受邀出席开发者大会!
  10. 使用 mv 命令移动文件夹
  11. 粒子效果动画使用总结
  12. 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏...
  13. thinkpad X1 2016 NMV固态硬盘 win7+win10双系统 GPT+UEFI启动 系统安装记录
  14. ps怎么设计html界面,UI设计师的工作界面怎么用PS设置
  15. 最新apktool_2.4.1
  16. Excel导出数据 基于注解实现 复制即可用
  17. 二、RPA机器人开发基础
  18. 查缺补漏:集和与非平凡属性
  19. 简单聊聊NOR Flash、NAND Flash和EMMC Flash
  20. 过上等生活,享下等情欲

热门文章

  1. Spring+Mybatis多数据源配置(三)——Spring如何获取Properties文件的信息
  2. 二叉树构建及双向链表
  3. 参会指南 | 首届音视频线上峰会倒计时1天!
  4. 特别策划:视频会议协作平台的机会与技术挑战
  5. Zoe Liu:传统算法与深度学习各有所长
  6. 刘文峰:让科技成就艺术创意
  7. LeetCode——双指针
  8. PMP之项目整合管理
  9. curl-loader介绍
  10. Linux深入学习专业书