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

struct Node {

int val;

Node *left;

Node *right;

Node *next;

}

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

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

提示:

  • 你只能使用常量级额外空间。
  • 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。
/*
// 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 root;}LinkedList<Node> queue=new LinkedList<>();queue.addLast(root);while(!queue.isEmpty()){int len=queue.size();for(int i=0;i<len;i++){Node t=queue.removeFirst();if(t.left!=null){queue.addLast(t.left);}if(t.right!=null){queue.addLast(t.right);}if(i+1<len){Node p=queue.getFirst();t.next=p;}}}return root;}
}

解析:层序遍历,每一层把next弄好,最后一个元素的next=null;

每个叶子节点(nil)是黑色。_填充每个节点的下一个右侧节点指针相关推荐

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

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

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

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

  3. 【数据结构与算法】之深入解析“填充每个节点的下一个右侧节点指针”的求解思路与算法示例

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

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

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

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

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

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

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

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

    文章目录 1. 题目 2. 解题 2.1 递归 2.2 循环 2.3 O(1)空间复杂度 1. 题目 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: stru ...

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

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

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

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

最新文章

  1. Servlet 获取IllegelStateException
  2. 在Ubuntu中用anaconda快速安装opencv3
  3. BroadCastReceiver简介
  4. 系统网卡性能,丢包率与下载上传,ulimit设置
  5. (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  6. 一个学习的好去处!!
  7. 06_排序_希尔排序
  8. java永生代和新生代_Java:永生的对象和对象的复活
  9. javascript的offset、client、scroll使用方法
  10. 35. 源码与 Tarball
  11. mysql列行条件,返回满足mysql表中列的多个条件的行
  12. The Podfile (Podfile 的写法和规范)
  13. java 进度条插件_java进度条控件如何使用?
  14. ubuntu安装配置搜狗拼音输入法
  15. vscode连接远程服务器报错ln: failed to create hard link ... File exists
  16. java银行排队系统_java--面向对象(一个简单的银行排队系统)原理版
  17. 俄勒冈州立大学研发脱口秀机器人,全美巡演数十场获好评
  18. dpi、dp、sp、px、mm之间的关系
  19. CMOS与TTL电路的区别
  20. 关于设备像素比dpr的理解

热门文章

  1. MagicDraw UML 16.8 安装教程(2)-破解补丁
  2. centos 宝塔面版 运行 thinkjs
  3. 解决低版本IE关于html5新特性的兼容性问题html5shiv.js和Respond.js,以及excanvas.js解决低版本IE不支持canvas的问题...
  4. 开篇~试试word写博客
  5. codeforces 906C
  6. Ubuntu下如何修改文件或者文件夹的权限
  7. 《C程序设计语言》笔记 (三) 控制流
  8. 面向对象设计思想_重要_2
  9. 控股天弘基金 阿里无银行之名行银行之实
  10. Die notwendige Evolution menschlichen Verhalten