问题描述

给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
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

代码

/*
// Definition for a Node.
class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, Node _left, Node _right, Node _next) {val = _val;left = _left;right = _right;next = _next;}
};
*/class Solution {public Node connect(Node root) {if(root==null)return null;int num=0,i=0;Queue<Node> nodes=new LinkedList<Node>();nodes.add(root);while(nodes.size()>0) {Node q=nodes.poll();if(q.left!=null)nodes.add(q.left);if(q.right!=null)nodes.add(q.right);q.next=nodes.peek();i++;if(i==(1<<num)){i=0;num++;q.next=null;}}return root;}
}

Leetcode116. 填充每个节点的下一个右侧节点指针(宽搜或深搜)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. leetcode--116. 填充每个节点的下一个右侧节点指针

    给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; ...

  9. LeetCode-116. 填充每个节点的下一个右侧节点指针

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

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

    https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/ 难度:中等   给定一个完美二叉树,其所有叶 ...

最新文章

  1. Paper9:Fast RCNN
  2. [微信小程序]手指触摸动画效果(完整代码附效果图)
  3. 实战:基于深度学习的道路损坏检测
  4. 12 个的优秀手机设计灵感
  5. 在AngularJS控制器之间共享数据
  6. 如何成为简历界的“老司机”?这些简历技能你get到了吗?
  7. php 头部utf8,PHP去掉utf8格式文件中的bom头部_PHP教程
  8. 分段路由中的控制指的什么?—Vecloud
  9. jQuery中的text()、html()和val()以及innerText、innerHTML和value
  10. nssl1320,jzoj(初中)2108-买装备【dfs,水题】
  11. c语言大乐透编译,Excel大乐透摇号vba代码分享,说不定就中百万了呢
  12. hadoop join之map side join
  13. Vision Transformer 论文解读
  14. Ubuntu16.04 设置环境变量的方法
  15. 计算机基础与应用32页,《计算机基础与应用》2次作业及答案
  16. python 堆栈溢出_内存 - 如何发生“堆栈溢出”,如何防止它?
  17. 小米真蓝牙耳机说明书_小米真无线蓝牙耳机Air拆解:399元值了
  18. 2021年机修钳工(中级)报名考试及机修钳工(中级)考试资料
  19. Redis 常见面试题(带答案)110道
  20. 【ArcGIS教程】(1)带有经纬度的EXCEL数据如何转换为shp矢量数据?

热门文章

  1. 关于数据迁移的一些经验总结
  2. plus初始化原理及plus is not defined,mui is not defined 错误汇总
  3. Cockroachdb 一、系统环境
  4. Swift - 设置UIView的背景色和背景图片
  5. Eclipse安装插件的“最好方法”:dropins文件夹的妙用
  6. IronPython 2.0 Alpha2
  7. System.Windows.Forms.TreeView
  8. java 模式匹配_java模式匹配之蛮力匹配
  9. shell引入sql脚本报错_Oracle11g rac集群安装执行脚本报错的解决方法
  10. 【大数据部落】R语言实现:混合正态分布EM最大期望估计法