当前位置:网站首页>2022.07.26_每日一题
2022.07.26_每日一题
2022-07-31 06:07:00 【诺.い】
116. 填充每个节点的下一个右侧节点指针
题目描述
- 填充每个节点的下一个右侧节点指针
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
示例 1:
输入:root = [1,2,3,4,5,6,7]
输出:[1,#,2,3,#,4,5,6,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,'#' 标志着每一层的结束。
示例 2:
输入:root = []
输出:[]
提示:
树中节点的数量在 [0, 212 - 1] 范围内
-1000 <= node.val <= 1000
进阶:
你只能使用常量级额外空间。
使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。
coding
/* // 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 {
// 借用了下先序遍历
// next 指针分两种
// 1
// 2 3
// 4 5 6 7
// 第一种: 2 -> 3 直接让头节点的左孩子指向右孩子即可
// 第二种: 5 -> 6 两棵子树左右孩子直接的指针, 可以利用头节点 2 的 next 指针指向 3, 然后 5 指向 3 的左孩子即可
public Node connect(Node root) {
preOrderRecur(root);
return root;
}
public void preOrderRecur(Node node) {
if (node == null) {
return;
}
if (node.left != null) {
node.left.next = node.right;
node.right.next = node.next == null ? null : node.next.left;
}
preOrderRecur(node.left);
preOrderRecur(node.right);
}
}
边栏推荐
- 批量免费文字翻译
- 把 VS Code 当游戏机
- Analysis of the implementation principle and detailed knowledge of v-model syntactic sugar and how to make the components you develop support v-model
- 从 Google 离职,前Go 语言负责人跳槽小公司
- Analysis of pseudo-classes and pseudo-elements
- 树状数组(单点修改区间查询和区间修改单点查询)
- 文件 - 03 下载文件:根据文件id获取下载链接
- Titanic 预测问题
- 【 TA - frost Wolf _may - "one hundred plan" 】 art 2.3 hard surface
- Redux state management
猜你喜欢

讲解实例+详细介绍@Resource与@Autowired注解的区别(全网最全)

【 TA - frost Wolf _may - "one hundred plan" 】 art 2.3 hard surface

Conditional statements of shell (test, if, case)

Redux状态管理

Koa框架的基本使用

360推送-360推送工具-360批量推送工具

Redux state management

【TA-霜狼_may-《百人计划》】美术2.3 硬表面基础

Explain the example + detail the difference between @Resource and @Autowired annotations (the most complete in the entire network)

批量免费文字翻译
随机推荐
Detailed explanation of js prototype
强化学习科研知识必备(数据库、期刊、会议、牛人)
那些破釜沉舟入局Web3.0的互联网精英都怎么样了?
测试 思维导图
【网络攻防】常见的网络攻防技术——黑客攻防(通俗易懂版)
文件 - 07 删除文件: 根据fileIds批量删除文件及文件信息
【TA-霜狼_may-《百人计划》】美术2.3 硬表面基础
关于求反三角函数的三角函数值
Project exercise - memorandum (add, delete, modify, check)
一文读懂 MongoDB 和 MySQL 的差异
批量免费文字翻译
【云原生】-Docker容器迁移Oracle到MySQL
MySQL系列一:账号管理与引擎
单点登录 思维导图
Moment.js common methods
熟悉而陌生的新朋友——IAsyncDisposable
postgresql源码学习(34)—— 事务日志⑩ - 全页写机制
项目 - 如何根据最近30天、最近14天、最近7天、最近24小时、自定义时间范围查询MySQL中的数据?
Markdown中的数学符号
安装和使用uView