Leetcode116. 填充每个节点的下一个右侧节点指针(宽搜或深搜)
问题描述
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
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. 填充每个节点的下一个右侧节点指针(宽搜或深搜)相关推荐
- leetcode116. 填充每个节点的下一个右侧节点指针
116. 填充每个节点的下一个右侧节点指针 难度中等128 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node {int val;Node ...
- 二叉树:填充每个节点的下一个右侧节点指针(java)
leetcode116:填充每个节点的下一个右侧节点指针 leetcode原题链接: 题目描述 递归解法一 递归方法二(效率更高) 二叉树专题 leetcode原题链接: 116题:填充每个节点的下一 ...
- 116. 填充每个节点的下一个右侧节点指针
2020-05-28 1.题目描述 填充每个节点的下一个右侧节点指针 2.题解 层次遍历即可 3.代码 /* // Definition for a Node. class Node { public ...
- 力扣116. 填充每个节点的下一个右侧节点指针(C++,附思路)
题目链接在这里: 116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/popu ...
- 力扣 填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针 题目描述 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node { int val; Node *left ...
- [leetcode-117]填充每个节点的下一个右侧节点指针 II
(1 AC) 填充每个节点的下一个右侧节点指针 I是完美二叉树.这个是任意二叉树 给定一个二叉树 struct Node {int val;Node *left;Node *right;Node *n ...
- 2.<tag-二叉树和层序遍历相关题>-lt.116. 填充每个节点的下一个右侧节点指针 + lt.117. 填充每个节点的下一个右侧节点指针 II 1
lt.116. 填充每个节点的下一个右侧节点指针 [案例需求] [思路分析一, 迭代法] [代码实现] /* // Definition for a Node. class Node {public ...
- leetcode--116. 填充每个节点的下一个右侧节点指针
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; ...
- LeetCode-116. 填充每个节点的下一个右侧节点指针
题目描述: 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node {int val;Node *left;Node *right;Nod ...
- LeetCode 116. 填充每个节点的下一个右侧节点指针
https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/ 难度:中等 给定一个完美二叉树,其所有叶 ...
最新文章
- Paper9:Fast RCNN
- [微信小程序]手指触摸动画效果(完整代码附效果图)
- 实战:基于深度学习的道路损坏检测
- 12 个的优秀手机设计灵感
- 在AngularJS控制器之间共享数据
- 如何成为简历界的“老司机”?这些简历技能你get到了吗?
- php 头部utf8,PHP去掉utf8格式文件中的bom头部_PHP教程
- 分段路由中的控制指的什么?—Vecloud
- jQuery中的text()、html()和val()以及innerText、innerHTML和value
- nssl1320,jzoj(初中)2108-买装备【dfs,水题】
- c语言大乐透编译,Excel大乐透摇号vba代码分享,说不定就中百万了呢
- hadoop join之map side join
- Vision Transformer 论文解读
- Ubuntu16.04 设置环境变量的方法
- 计算机基础与应用32页,《计算机基础与应用》2次作业及答案
- python 堆栈溢出_内存 - 如何发生“堆栈溢出”,如何防止它?
- 小米真蓝牙耳机说明书_小米真无线蓝牙耳机Air拆解:399元值了
- 2021年机修钳工(中级)报名考试及机修钳工(中级)考试资料
- Redis 常见面试题(带答案)110道
- 【ArcGIS教程】(1)带有经纬度的EXCEL数据如何转换为shp矢量数据?
热门文章
- 关于数据迁移的一些经验总结
- plus初始化原理及plus is not defined,mui is not defined 错误汇总
- Cockroachdb 一、系统环境
- Swift - 设置UIView的背景色和背景图片
- Eclipse安装插件的“最好方法”:dropins文件夹的妙用
- IronPython 2.0 Alpha2
- System.Windows.Forms.TreeView
- java 模式匹配_java模式匹配之蛮力匹配
- shell引入sql脚本报错_Oracle11g rac集群安装执行脚本报错的解决方法
- 【大数据部落】R语言实现:混合正态分布EM最大期望估计法