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

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 递归
      • 2.2 循环
      • 2.3 O(1)空间复杂度

1. 题目

给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:

struct Node {int val;Node *left;Node *right;Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。

初始状态下,所有 next 指针都被设置为 NULL

在这里插入图片描述

2. 解题

2.1 递归

class Solution {
public:Node* connect(Node* root) {if(root == NULL || root->left == NULL)return root;root->left->next = root->right;if(root->next != NULL)root->right->next = root->next->left;connect(root->left);connect(root->right);return root;}
};

2.2 循环

class Solution {
public:Node* connect(Node* root) {if(root == NULL || root->left == NULL)return root;queue<Node*> q;q.push(root);Node *p;int n;while(!q.empty()){n = q.size();while(n--){p = q.front();if(p->left != NULL){q.push(p->left);q.push(p->right);p->left->next = p->right;if(p->next != NULL)p->right->next = p->next->left;}q.pop();}	}return root;}
};

2.3 O(1)空间复杂度

  • 利用next指针
class Solution {
public:Node* connect(Node* root) {if(root == NULL || root->left == NULL)return root;Node *parent = root, *lvfirst, *prev;while(parent != NULL){lvfirst = parent->left;if(lvfirst != NULL){while(parent){parent->left->next = parent->right;prev = parent->right;parent = parent->next;if(parent)prev->next = parent->left;}}parent = lvfirst;	}return root;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大圣魔方——美团点评酒旅BI报表工具平台开发实践

当前的互联网数据仓库系统里&#xff0c;数据中心往往存放了大量Cube化或者半Cube化的数据。如果需要将这些数据的内在关系体现出来&#xff0c;需要写大量的程序和SQL来发现数据之间的内在规律&#xff0c;往往会造成用户做非常多的重复性工作&#xff1b;而且由于没有数据校验…

基于知识图谱的智能问答方案

基于知识图谱的智能问答方案&#xff1a;https://cloud.tencent.com/developer/article/1661504 基于知识图谱的智能问答方案2020-07-142020-07-14 15:57:50阅读 9950三个角度理解知识图谱2012年谷歌首次提出“知识图谱”这个词&#xff0c;由此知识图谱在工业界也出现得越来越…

论文浅尝 - ACL2020 | 用于实体对齐的邻居匹配网络

笔记整理 | 谭亦鸣&#xff0c;东南大学博士来源&#xff1a;ACL 20链接&#xff1a;https://www.aclweb.org/anthology/2020.acl-main.578.pdf1.介绍图谱之间的异构差异是建立实体对齐的一个主要挑战&#xff0c;本文提出了Neighborhood Match Network (NMN)&#xff0c;用于处…

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

文章目录1. 题目2. 解题2.1 递归2.2 queue循环2.3 利用next循环1. 题目 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL。 初始状态下&#xff0c;所有 next 指针都被设置为 NULL。 类似…

美团点评境外度假团队前端项目开发实践总结

随着前端项目数量和规模越来越大&#xff0c;参与的人员也越来越多&#xff0c;如何在前端项目开发过程中保证优质的开发者体验和项目的可维护性&#xff0c;同时确保极致的用户体验将会是一个非常大的挑战。 为了应对这个挑战&#xff0c;美团点评境外度假前端研发团队自2016年…

线性代数不深入,机器学习两行泪!

我经常听到有人说&#xff0c;机器学习很难&#xff0c;到底怎么学更高效&#xff1f;其实&#xff0c;我想说&#xff0c;机器学习本身没有多大难度&#xff0c;因为经过多年的积累后&#xff0c;很多规则已经成型了。对于我们来说真正难的&#xff0c;是机器学习背后的算法所…

反爬虫机制和破解方法汇总

https://cloud.tencent.com/developer/article/1032918 什么是爬虫和反爬虫&#xff1f;爬虫&#xff1a;使用任何技术手段&#xff0c;批量获取网站信息的一种方式。反爬虫&#xff1a;使用任何技术手段&#xff0c;阻止别人批量获取自己网站信息的一种方式。常见的反爬虫机制…

论文小综 | 知识图谱表示学习中的零样本实体研究

转载公众号 | 浙大KG 本文作者| 耿玉霞&#xff0c;浙江大学在读博士&#xff0c;主要研究方向为知识图谱、零样本学习及可解释性前言随着知识图谱表示学习算法的蓬勃发展&#xff0c;在各个领域中都得到了广泛的应用&#xff0c;如推荐系统、知识问答等&#xff0c;以及知识图…

LeetCode 297. 二叉树的序列化与反序列化(前序遍历层序遍历)

文章目录1. 题目2. 解题2.1 前序遍历2.2 层序遍历1. 题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#xff0c;进而可以将转换后的数据存储在一个文件或者内存中&#xff0c;同时也可以通过网络传输到另一个计算机环境&#xff0c;采取相反方式重构得到原数据…

互联网企业安全之端口监控

外网端口监控系统是整个安全体系中非常重要的一环&#xff0c;它就像眼睛一样&#xff0c;时刻监控外网端口开放情况&#xff0c;并且在发现高危端口时能够及时提醒安全、运维人员做出相应处理。 对安全人员来说&#xff0c;互联网公司在快速发展壮大的过程中&#xff0c;外网边…

知乎热榜:程序员达到什么水平能拿到20k月薪

昨天在知乎上刷到一个热门问题:程序员需要达到什么水平才能顺利拿到 20k 无压力&#xff1f;其中一个最热门的回答是&#xff1a;“其实&#xff0c;无论你是前端还是后端、想进大厂还是拿高薪&#xff0c;算法都一定很重要。”为什么&#xff0c;算法会如此重要&#xff1f;不…

研究综述 | 知识图谱划分算法研究综述

作者 | 王鑫&#xff0c;天津大学智能与计算学部来源 | 计算机学报知识图谱划分是大规模知识图谱分布式处理的首要工作&#xff0c;是知识图谱的分布式存储、查询、推理和挖掘的基础支撑。从知识图谱和图划分的定义出发&#xff0c;系统性地介绍当前可用于知识图谱数据划分的各…

深度学习中不得不学的Graph Embedding方法

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/64200072 深度学习中不得不学的Graph Embedding方法王喆​数据挖掘等 3 个话题下的优秀答主​关注他1,290 人赞同了该文章这里是「王喆的机器学习笔记」的第十四篇文章&#xff0c;之前已经有无数同学让我介绍一下Graph Embe…

写给新手炼丹师:2021版调参上分手册

文 | 山竹小果在日常调参的摸爬滚打中&#xff0c;参考了不少他人的调参经验&#xff0c;也积累了自己的一些有效调参方法&#xff0c;慢慢总结整理如下。希望对新晋算法工程师有所助力呀&#xff5e;寻找合适的学习率(learning rate)学习率是一个非常非常重要的超参数&#xf…

函数式编程在Redux/React中的应用

本文简述了软件复杂度问题及应对策略&#xff1a;抽象和组合&#xff1b;展示了抽象和组合在函数式编程中的应用&#xff1b;并展示了Redux/React在解决前端状态管理的复杂度方面对上述理论的实践。这其中包括了一段有趣的Redux推导。 软件复杂度 软件的首要技术使命是管理复杂…

论文浅尝 - EMNLP2020 | ConceptBert:视觉问题回答的概念感知表示

笔记整理 | 陈卓&#xff0c;浙江大学计算机科学与技术系&#xff0c;博士研究生研究方向 | 知识图谱/图神经网络/多模态论文链接&#xff1a;https://www.aclweb.org/anthology/2020.findings-emnlp.44.pdf代码&#xff1a;https://github.com/ZiaMaryam/ConceptBERT发表会议&…

LeetCode 215. 数组中的第K个最大元素(快速排序)

1. 题目 在未排序的数组中找到第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4说明: 你可以假设 k…

论文浅尝 - EMNLP2020 | 通过词重排序跨语言解析

笔记整理 | 吴林娟&#xff0c;天津大学硕士来源&#xff1a;EMNLP2020链接&#xff1a;https://www.aclweb.org/anthology/2020.findings-emnlp.265.pdf动机依赖解析研究快速发展&#xff0c;然而依赖解析的性能在很大程度上依赖于语料库的大小。获取足够的训练数据成本大且困…

Knowledge Review:超越知识蒸馏,Student上分新玩法!

文 | 陀飞轮知乎今天介绍一篇我司的文章Distilling Knowledge via Knowledge Review(缩写为KR)&#xff0c;提出知识蒸馏的新解法。之前在知乎回答过一个知识蒸馏的问题&#xff0c;为何感觉“知识蒸馏”这几年没有什么成果&#xff1f;https://www.zhihu.com/question/3098084…

美团App 插件化实践

背景 在Android开发行业里&#xff0c;插件化已经不是一门新鲜的技术了&#xff0c;在稍大的平台型App上早已是标配。进入2017年&#xff0c;Atlas、Replugin、VirtualAPK相继开源&#xff0c;标志着插件化技术进入了成熟阶段。但纵观各大插件框架&#xff0c;都是基于自身App的…