1 题目

填充每个节点指向最右节点的next指针,

填充所有节点的next指针,指向最接近它的同一层右边节点。如果没有同一层没有右边的节点,则应该将next指针设置为NULL。

初始时,所有的next指针都为NULL

注意:

  • 你只能使用常量级的额外内存空间
  • 可以假设给出的二叉树是一个完美的二叉树(即,所有叶子节点都位于同一层,而且每个父节点都有两个孩子节点)。

2 解法

因为此题为按层来填充每一个节点的next为其同层的右节点(如果存在的话)

2.1 用队列的方法

2.2 不用队列

因为需要将每一层用next指针链接好, 所以遍历的思想是,链接好的一层遍历的时候把其下一层链接好, 在每一层遍历时,因为要链接其下一层的各个节点,所以要用一个last指针将上一个被链接为next的节点标记好,且要标记好下一层的头节点,以便于上一层遍历完遍历下一层,所以有:

/*** Definition for binary tree with next pointer.* struct TreeLinkNode {*  int val;*  TreeLinkNode *left, *right, *next;*  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}* };*/
class Solution {
public:void connect(TreeLinkNode *root) {TreeLinkNode *start(root);while (start) {TreeLinkNode *nextStart(NULL), *last(NULL);for (auto p = start; p != NULL; p = p->next) {if (p->left) {if (!nextStart)nextStart = p->left;if (last)last->next = p->left;last = p->left;}if (p->right) {if (!nextStart)nextStart = p->right;if (last)last->next = p->right;last = p->right;}}start = nextStart;}}
};

leetcode 116 --- 填充每个节点指向最右节点的next指针相关推荐

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

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

  2. Leetcode 116. 填充每个节点的下一个右侧节点指针 解题思路及C++实现

    方法一:层序遍历(这是比较暴力愚蠢的方法) 解题思路: 这里使用层序遍历访问这颗完美二叉树,使用的是两个栈,而不是两个队列,因为这样在遍历每一层并指定next指针时会更方便一些,但是要注意的一点是,循 ...

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

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

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

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

  5. 最右叶节点和最右节点

    一个是最右边的叶子结点, 一个就是最右边的 可以不是叶子结点

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

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

  7. LeetCode 24.两两交换链表中的节点 C语言

    题目 24.两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3- ...

  8. [leetcode] 116. Populating Next Right Pointers in Each Node @ python

    原题 Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode * ...

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

    力扣117 力扣116 目录 思路:(116,117方法完全相同) 层序遍历 思路:(116,117方法完全相同) 层序遍历 二叉树层序遍历模板 以上可以总结出 在对列中出队一个节点后,将该节点指向队 ...

最新文章

  1. C#创建Windows服务
  2. Android Parcelable
  3. Xamarin XAML语言教程使用Xamarin Studio创建XAML(二)
  4. python就业方向哪个好-学习python就业方向都有哪些?
  5. [转]Java8-本地缓存
  6. android d-bus,android EventBus的使用
  7. 飞鸽_飞鸽传书_飞鸽传书2010_飞鸽传书2010下载
  8. 如何破解受保护的excel密码
  9. ffmpeg软硬件解码基础(总目录)
  10. 互联网系统架构的演进
  11. Dapper使用在WCF上总是说Service找不到
  12. 整理了70个Python实战项目列表,都有完整且详细的教程
  13. Google - 搜索图片快速设置
  14. 自定义控件ViewGroup上下滑动
  15. 高德纳(Donald Knuth)语录
  16. 使用CefSharp开发一个12306“安心刷票弹窗通知”工具
  17. Backdoor.Zegost木马病毒分析(一)
  18. 【Proe】三维模型转二维CAD图
  19. RabbitMQ之web界面解析
  20. 人生第一份工作离职了,给自己交予的答卷

热门文章

  1. python取数字第一位数_python基础:8.切片和缩进
  2. cpu开核_新锐龙让AMD重返巅峰,但逆袭的50年里这些CPU也不应忘记
  3. 实数序列频谱的共轭对称性(DFT与IDFT仿真实现)
  4. 有效的单元测试--总结
  5. 多个iframe同时加载并动态调整大小
  6. MySQL 字符集相关问题
  7. c语言更改编译时字体,c习题编译时出现空的字符常量,怎么修改?
  8. shell linux教程,Shell入门基础知识
  9. 外设驱动库开发笔记26:nRF24L01无线通讯驱动
  10. vue 每次弹框都初始化