给定一个二叉树

struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。

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

进阶:

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

示例:

输入:root = [1,2,3,4,5,null,7]
输出:[1,#,2,3,#,4,5,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。

提示:

树中的节点数小于 6000
-100 <= node.val <= 100

思路:层序遍历改一下,把同一层的连一下即可。

/*
// 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;}Queue<Node> Q = new LinkedList<Node>(); Q.add(root);while (Q.size() > 0) {int size = Q.size();for(int i = 0; i < size; i++) {Node node = Q.poll();if (i < size - 1) {node.next = Q.peek();}if (node.left != null) {Q.add(node.left);}if (node.right != null) {Q.add(node.right);}}}return root;}
}

leetcode117. 填充每个节点的下一个右侧节点指针 II相关推荐

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

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

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

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

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

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

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

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

  8. leetcode117. 填充每个节点的下一个右侧节点指针 II(dfs)

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

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

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

最新文章

  1. SEO内部链接优化的技巧
  2. android viewpager 嵌套fragment,Android ViewPager+Fragment多层嵌套(使用问题处理)
  3. 互联网协议 — New IP 网络架构
  4. java 中gui的作用_java学习中最应该注意的Java GUI用户界面以何为基础
  5. C++函数模板(二)引用
  6. 如何轮播 DataV 大屏
  7. del rd命令行下删除文件不需要确认
  8. 使用Spring框架能带来那些好处?
  9. 进一步的去了解正则[一]
  10. iVMS-4200 Vs区别_杏林早报 | 西芹、水芹、旱芹...功效有区别,吃对才真降血压!...
  11. System类的概述和方法使用
  12. JSPatch库, 一个Apple官方支持的实现在线更新iOS应用的库
  13. 在Cocos2d-x中使用CocosBuilder
  14. 细数阿里 25 个开源的前端项目
  15. 瑞斯康达olt排查故障的常用命令
  16. 大雁牌计算机在线使用,用大雁牌计算器解决有关计算问题.doc
  17. 2020年12月31日flash禁用后网页如何播放rtmp视频流
  18. LIEF:修改安卓.so后报 dlopen failed:has invalid shdr offset/size
  19. layui登陆验证页面模板(滑块学习)
  20. [re入门]ce对扫雷的修改

热门文章

  1. 树莓派 蓝牙音响_你应该拥有一个树莓派
  2. python人工智能原理及其应用_人工智能原理与实践:基于Python语言和TensorFlow
  3. python清空列表_Python之列表
  4. thinkphp5 判断数据是否存在_ThinkPHP 5.1 中间件中判断要访问的操作是否存在
  5. 【Modern OpenGL】摄像机系统 Camera
  6. WINCE REG文件相关资料
  7. 射频通路 隔直_2.4G射频双向功放电路的设计与制作
  8. java 类型转换_java中的基本数据类型的转换
  9. ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期
  10. ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)