LeetCode 558. 四叉树交集(递归)

1. 题目

四叉树是一种树数据,其中每个结点恰好有四个子结点:topLeft、topRight、bottomLeft 和 bottomRight。四叉树通常被用来划分一个二维空间,递归地将其细分为四个象限或区域。

我们希望在四叉树中存储 True/False 信息。四叉树用来表示 N * N 的布尔网格。对于每个结点, 它将被等分成四个孩子结点直到这个区域内的值都是相同的。每个节点都有另外两个布尔属性:isLeaf 和 val。当这个节点是一个叶子结点时 isLeaf 为真。val 变量储存叶子结点所代表的区域的值。

例如,下面是两个四叉树 A 和 B:

A:
+-------+-------+   T: true
|       |       |   F: false
|   T   |   T   |
|       |       |
+-------+-------+
|       |       |
|   F   |   F   |
|       |       |
+-------+-------+
topLeft: T
topRight: T
bottomLeft: F
bottomRight: FB:               
+-------+---+---+
|       | F | F |
|   T   +---+---+
|       | T | T |
+-------+---+---+
|       |       |
|   T   |   F   |
|       |       |
+-------+-------+
topLeft: T
topRight:topLeft: FtopRight: FbottomLeft: TbottomRight: T
bottomLeft: T
bottomRight: F

你的任务是实现一个函数,该函数根据两个四叉树返回表示这两个四叉树的逻辑或(或并)的四叉树。

A:                 B:                 C (A or B):
+-------+-------+  +-------+---+---+  +-------+-------+
|       |       |  |       | F | F |  |       |       |
|   T   |   T   |  |   T   +---+---+  |   T   |   T   |
|       |       |  |       | T | T |  |       |       |
+-------+-------+  +-------+---+---+  +-------+-------+
|       |       |  |       |       |  |       |       |
|   F   |   F   |  |   T   |   F   |  |   T   |   F   |
|       |       |  |       |       |  |       |       |
+-------+-------+  +-------+-------+  +-------+-------+

提示:
A 和 B 都表示大小为 N * N 的网格。
N 将确保是 2 的整次幂。
逻辑或的定义如下:如果 A 为 True ,或者 B 为 True ,或者 A 和 B 都为 True,则 “A 或 B” 为 True。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/quad-tree-intersection
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

相关题目:LeetCode 427. 建立四叉树(递归)

/*
// Definition for a QuadTree node.
class Node {
public:bool val;bool isLeaf;Node* topLeft;Node* topRight;Node* bottomLeft;Node* bottomRight;Node() {}Node(bool _val, bool _isLeaf, Node* _topLeft, Node* _topRight, Node* _bottomLeft, Node* _bottomRight) {val = _val;isLeaf = _isLeaf;topLeft = _topLeft;topRight = _topRight;bottomLeft = _bottomLeft;bottomRight = _bottomRight;}
};
*/
class Solution {
public:Node* intersect(Node* q1, Node* q2) {if(q1->isLeaf || q2->isLeaf)//至少有一个是叶子(全0 or 全1){if(q1->isLeaf && q2->isLeaf)//都是叶子{bool v = q1->val || q2->val;//求并return new Node(v,true,0,0,0,0);}else if(q1->isLeaf){if(q1->val == false)//q1全为0,并集由q2决定return q2;elsereturn q1;//q1全为1,直接返回q1}else//q2->isLeaf{if(q2->val == false)//q2全为0,并集由q1决定return q1;elsereturn q2;//q2全为1,直接返回q2}}else//q1,q2都不是叶子,其下面有true,有false{Node *root = new Node(false,false,0,0,0,0);root->topLeft = intersect(q1->topLeft, q2->topLeft);root->topRight = intersect(q1->topRight, q2->topRight);root->bottomLeft = intersect(q1->bottomLeft, q2->bottomLeft);root->bottomRight = intersect(q1->bottomRight, q2->bottomRight);if(root->topLeft->isLeaf && root->topRight->isLeaf&& root->bottomLeft->isLeaf && root->bottomRight->isLeaf){   //四个子节点都是叶子bool topL = root->topLeft->val;if(root->topRight->val == topL && root->bottomLeft->val == topL&& root->bottomRight->val == topL){   //且四个子节点的值都相同,则root是叶子root->isLeaf = true;root->val = topL;//舍弃孩子(合并了)root->topLeft = root->topRight = root->bottomLeft= root->bottomRight = NULL;}}return root;}}
};

在这里插入图片描述

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

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

相关文章

Online Learning算法理论与实践

背景 Online Learning是工业界比较常用的机器学习算法,在很多场景下都能有很好的效果。本文主要介绍Online Learning的基本原理和两种常用的Online Learning算法:FTRL(Follow The Regularized Leader)[1]和BPR(Bayesia…

在斯坦福,做 Manning 的 phd 要有多强?

文 | 付瑶编 | 小轶博士的毕业论文是我们博士学位教育重要的一环,不仅仅是获得学位的最后一个难关,也是读博期间工作的总结展现。那么一个优秀的博士在读博期间会做出多少成果?ta 的博士论文又长什么样?今天,让我们打开…

LeetCode 655. 输出二叉树(二叉树高度二叉树遍历)

1. 题目 在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则: 行数 m 应当等于给定二叉树的高度。列数 n 应当总是奇数。根节点的值(以字符串格式给出)应当放在可放置的第一行正中间。根节点所在的行与列会将剩余空间划分…

开源开放 | 计算机科学示意图问答数据集CSDQA(CCKS2021)

OpenKG地址:http://openkg.cn/dataset/csdqa开源地址:http://zscl.xjtudlc.com:888/CSDQA/开放许可协议:CC BY-SA 4.0 (署名相似共享)贡献者:西安交通大学(王绍伟、张玲玲、杨祎、胡欣、秦涛、魏笔凡、刘均…

数据驱动精准化营销在大众点评的实践

精准化营销一直以来都是互联网营销业务在细分市场下快速获取用户和提高转化的利器。在移动互联网爆发的今天,数据量呈指数增长,如何在移动和大数据场景下用数据驱动进行精准营销,从而提高营销效能,成为营销业务部门的主要挑战之一…

LeetCode 1104. 二叉树寻路(数学位运算)

1. 题目 在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。 如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记&am…

再介绍一篇最新的Contrastive Self-supervised Learning综述论文

文 | 对白源 | 对白的算法屋自监督学习(Self-supervised learning)最近获得了很多关注,因为其可以避免对数据集进行大量的标签标注。它可以把自己定义的伪标签当作训练的信号,然后把学习到的表示(representation&#…

论文浅尝 | 重新审视语言模型与知识库的关系

笔记整理:陈卓,浙江大学在读博士,主要研究方向为低资源学习和知识图谱论文链接:https://arxiv.org/pdf/2106.09231发表会议:ACL 2021动机这篇文章类似于是批判性的文章,反驳的之前EMNLP2019的一篇文章knowl…

Spark在美团的实践

本文已发表在《程序员》杂志2016年4月期。 前言 美团是数据驱动的互联网服务,用户每天在美团上的点击、浏览、下单支付行为都会产生海量的日志,这些日志数据将被汇总处理、分析、挖掘与学习,为美团的各种推荐、搜索系统甚至公司战略目标制定提…

LeetCode 958. 二叉树的完全性检验(层序遍历)

1. 题目 给定一个二叉树,确定它是否是一个完全二叉树。 百度百科中对完全二叉树的定义如下: 若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在…

论文浅尝 | 通过学习中间步骤的监督信号改进多跳知识库问答

笔记整理:陈永锐,东南大学博士论文链接:https://arxiv.org/pdf/2101.03737.pdf概述该论文处理多跳知识库问答(KBQA)任务,主要关注训练过程在中间步骤缺乏监督信号的挑战。由于这一挑战,多跳 KBQ…

打破情感分类准确率 80 分天花板!更加充分的知识图谱结合范式

文 | SeverusNLP的研究者们一直都在尝试,怎么样让模型像人类一样,学会“知识”。而最直观的想法莫过于将人类已经总结出来供机器解读的“知识体系”,及其嵌入表示作为额外的特征添加到NLP模型之中。至少,从直觉上看,将…

分布式块存储系统Ursa的设计与实现

引言 云硬盘对IaaS云计算平台有至关重要的作用,几乎已成为必备组件,如亚马逊的EBS(Elastic Block Store)、阿里云的盘古、OpenStack中的Cinder等。云硬盘可为云计算平台带来许多优良特性,如更高的数据可靠性和可用性、灵活的数据快照功能、更…

LeetCode 919. 完全二叉树插入器(层序遍历队列)

1. 题目 完全二叉树是每一层(除最后一层外)都是完全填充(即,结点数达到最大)的,并且所有的结点都尽可能地集中在左侧。 设计一个用完全二叉树初始化的数据结构 CBTInserter,它支持以下几种操作…

开源开放 | 中文相对复杂词汇识别数据集RCWI-Dataset(CCKS2021)

OpenKG地址:http://openkg.cn/dataset/rcwi-dataset开放许可协议:CC BY-SA 4.0 (署名相似共享)贡献者:北京语言大学(阙孟溪、张宇飞、于东)1. 摘要中文领域的词汇复杂度评估资源较为匮乏&#x…

提升 NLP 实战技能的一点建议

作为最典型的 AI 领域之一,NLP 这些年也是越来越热门,基本上是各大厂必备了。随着 OpenAI 等技术的诞生、迁移学习等技术的成功应用,使得 NLP 技术在搜索、推荐、信息流、互联网金融、社交网络等领域不断发展壮大。与此同时,NLP 工…

深入FFM原理与实践

FM和FFM模型是最近几年提出的模型,凭借其在数据量比较大并且特征稀疏的情况下,仍然能够得到优秀的性能和效果的特性,屡次在各大公司举办的CTR预估比赛中获得不错的战绩。美团技术团队在搭建DSP的过程中,探索并使用了FM和FFM模型进…

LeetCode 993. 二叉树的堂兄弟节点(层序遍历)

文章目录1. 题目2. 解题2.1 层序遍历2.2 递归查找1. 题目 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k1 处。 如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。 我们给出了具有…

论文浅尝 | IRW:基于知识图谱和关系推理的视觉叙事框架

笔记整理:孙悦,天津大学 链接:https://www.aaai.org/AAAI21Papers/AAAI-3382.XuC.pdf动机视觉叙事是生成一个短篇故事来描述有序图像流的任务。与视觉字幕不同,故事不仅包含事实描述,还包含未出现在图像中的想象概念。…

薅羊毛 Colab使用外部数据的7种方法!

文 | Coggle源 | Coggle数据科学Colab作为非常强大且优惠的计算平台,一直广受大家喜爱。可以随时随地使用,还有免费的GPU可以薅羊毛。那么如何在Colab中使用外部数据集,来完成竞赛呢,本文将给出几种常见的方法。方法1:…