当前位置:网站首页>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);
}
}
边栏推荐
- 多进程全局变量失效、变量共享问题
- 浅层了解欧拉函数
- tidyverse笔记——tidyr包
- 项目 - 如何根据最近30天、最近14天、最近7天、最近24小时、自定义时间范围查询MySQL中的数据?
- 第十七章:回溯探求指定入口的马步遍历,贪心无回溯探求马步遍历,递归探求nxm棋盘带障碍马步遍历
- 04-SDRAM: Read Operation (Burst)
- 文件 - 03 下载文件:根据文件id获取下载链接
- Gradle剔除依赖演示
- 2022.7.29 Array
- Difficulty comparison between high concurrency and multithreading (easy to confuse)
猜你喜欢

Web浏览器工作流程解析

DirectExchange switch simple introduction demo

搭建zabbix监控及邮件报警(超详细教学)

LeetCode刷题——摆动序列#376#Medium

Difficulty comparison between high concurrency and multithreading (easy to confuse)

双倍数据速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory, DDR SDRAM)- 逻辑描述部分

从入门到一位合格的爬虫师,这几点很重要

单点登录 思维导图

Titanic 预测问题

【微服务】(十六)—— 分布式事务Seata
随机推荐
【Go语言入门】一文搞懂Go语言的最新依赖管理:go mod的使用
Chapter 17: go back to find the entrance to the specified traverse, "ma bu" or horse stance just look greedy, no back to search traversal, "ma bu" or horse stance just look recursive search NXM board
事务的四大特性
【科普向】5G核心网架构和关键技术
【微服务】Nacos集群搭建以及加载文件配置
Analysis of the implementation principle and detailed knowledge of v-model syntactic sugar and how to make the components you develop support v-model
Chapter 16: Constructing the Magic Square for Prime Numbers of Order n(5,7)
Redux state management
第十六章:构建n(5,7)阶素数幻方
Markdown中的数学符号
【编程题】【Scratch三级】2022.03 冬天下雪了
文件 - 02 上传文件:上传临时文件到服务器
【Go报错】go go.mod file not found in current directory or any parent directory 错误解决
Jobject 使用
外贸网站优化-外贸网站优化教程-外贸网站优化软件
基于交替迭代法的交直流混合系统潮流计算matlab程序iEEE9节点系统算例
电压源的电路分析知识分享
Basic usage of Koa framework
js原型详解
【TA-霜狼_may-《百人计划》】美术2.3 硬表面基础