LeetCode117----填充同一层兄弟节点
给定一个二叉树
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
说明:
- 你只能使用额外常数空间。
- 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。
示例:
给定二叉树,
1
/ \
2 3
/ \ \
4 5 7
调用你的函数后,该二叉树变为:
1 -> NULL
/ \
2 -> 3 -> NULL
/ \ \
4-> 5 -> 7 -> NULL 这里要求额外的空闲复杂度是常数项的,所以我们这里考虑用俩引用来解决!
定义一个queue引用,该引用一般指向同一层各个节点,cur引用一般代表的是queue引用的子节点,level引用一般代表的是同一层节点的起始节点,这个引用一般指向的对象不会变
代码如下:
public class LeetCode117 {
public static class TreeLinkNode {
int val;
TreeLinkNode left;
TreeLinkNode right;
TreeLinkNode next;
TreeLinkNode(int x) {
val = x;
}
}
public void connect(TreeLinkNode root) {
TreeLinkNode queue = root;
TreeLinkNode level = new TreeLinkNode(0);
while (queue != null) {
level.next = null;
TreeLinkNode cur = level;
while (queue != null) {
if (queue.left != null) {
cur.next = queue.left;
cur = cur.next;
}
if (queue.right != null) {
cur.next = queue.right;
cur = cur.next;
}
queue = queue.next;
}
queue = level.next;
}
}
}
LeetCode117----填充同一层兄弟节点的更多相关文章
- [Java]LeetCode117. 填充同一层的兄弟节点 II | Populating Next Right Pointers in Each Node II
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
- 【LeetCode】116#填充同一层的兄弟节点
题目描述 给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充 ...
- LeetCode 116/117. 填充同一层的兄弟节点(Populating Next Right Pointers in Each Node)
题目描述 给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充 ...
- [leetcode] 117. 填充同一层的兄弟节点 II
117. 填充同一层的兄弟节点 II 与116. 填充同一层的兄弟节点完全一样,二叉树的层次遍历..这是这次不是完美二叉树了 class Solution { public void connect( ...
- [leetcode] 116. 填充同一层的兄弟节点
116. 填充同一层的兄弟节点 其实就是个二叉树的层次遍历 class Solution { public void connect(TreeLinkNode root) { if (root == ...
- leetcode-填充同一层的兄弟节点Ⅱ
给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充它的每个 ...
- JQuery的父、子、兄弟节点查找方法
jQuery.parent(expr) //找父元素 jQuery.parents(expr) //找到所有祖先元素,不限于父元素 jQuery.children ...
- DOM之兄弟节点
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> < ...
- 关于JS中查看当前节点的兄弟节点的使用
<tr> <td align="center"><input style="width: 20px;" type="ch ...
随机推荐
- Java线程和进程
一.线程 1.什么是线程: 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程至少包含一个线程,也可以多个,线程属于进程. 2.Java中线程经历的四个 ...
- mongo分布式锁Java实现
一.分布式锁使用场景: 代码部署在多台服务器上,即分布式部署. 多个进程同步访问一个共享资源. 二.需要的技术: 数据库:mongo java:mongo操作插件类 MongoTemplate(mav ...
- O016、搭建实验环境
参考https://www.cnblogs.com/CloudMan6/p/5350536.html 在学习 OpenStack 各服务之前,需要先搭建一个实验环境. 一个看得到摸得着而且能让 ...
- Js 将图片的绝对路径转换为base64编码(3)
图片文件改变一方法:$('#file').change(function(){var oFReader = new FileReader();oFReader.readAsDataURL(this.f ...
- String,到底创建了多少个对象?
String str=new String("aaa"); <span style="font-size:14px;">String str=n ...
- 修改MySQL表中自增编号
alter table 表名 AUTO_INCREMENT = 值 例:
- filepath:处理文件路径的一把好手
1.ToSlash(path string) string 将相关平台的路径分隔符转为/ package main import ( "fmt" "os" &q ...
- 高性能mysql 附录D explain执行计划详解
EXPLAIN: extended关键字:在explain后使用extended关键字,可以显示filtered列和warning信息.在较旧的MySQL版本中,扩展信息是使用EXPLAIN EXTE ...
- python 单元测试_unittest(七)
一.unittest中各阶段的核心概念:TestCase, TestSuite, 断言函数, TextTestRunner,TestFixture TestCase:所用用例的基类,软件测试中基本的测 ...
- 理解 Cookie、Session、Token
发展史 Cookie Session Token Token的起源 基于服务器的验证 基于服务器验证方式暴露的一些问题 基于Token的验证原理 Tokens的优势 发展史 1.很久很久以前,Web ...