java创建四叉树_Java实现 LeetCode 427 建立四叉树

427. 建立四叉树

我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络。网络中每一格的值只会是真或假。树的根结点代表整个网络。对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相同的.

每个结点还有另外两个布尔变量: isLeaf 和 val。isLeaf 当这个节点是一个叶子结点时为真。val 变量储存叶子结点所代表的区域的值。

你的任务是使用一个四叉树表示给定的网络。下面的例子将有助于你理解这个问题:

给定下面这个8 x 8 网络,我们将这样建立一个对应的四叉树:

d1772b4f7c1f750fb25f789bc2d33b0e.png

由上文的定义,它能被这样分割:

ec9874db0f0a10dc3ede844b2e2ee517.png

对应的四叉树应该像下面这样,每个结点由一对 (isLeaf, val) 所代表.

对于非叶子结点,val 可以是任意的,所以使用 * 代替。

d330e0101a25791eddaa33490d423d1b.png

提示:

N 将小于 1000 且确保是 2 的整次幂。

其实这个题有一些像前段时间看到得棋盘覆盖

/*

// Definition for a QuadTree node.

class Node {

public boolean val;

public boolean isLeaf;

public Node topLeft;

public Node topRight;

public Node bottomLeft;

public Node bottomRight;

public Node() {

this.val = false;

this.isLeaf = false;

this.topLeft = null;

this.topRight = null;

this.bottomLeft = null;

this.bottomRight = null;

}

public Node(boolean val, boolean isLeaf) {

this.val = val;

this.isLeaf = isLeaf;

this.topLeft = null;

this.topRight = null;

this.bottomLeft = null;

this.bottomRight = null;

}

public Node(boolean val, boolean isLeaf, Node topLeft, Node topRight, Node bottomLeft, Node bottomRight) {

this.val = val;

this.isLeaf = isLeaf;

this.topLeft = topLeft;

this.topRight = topRight;

this.bottomLeft = bottomLeft;

this.bottomRight = bottomRight;

}

};

*/

class Solution {

public Node construct(int[][] grid) {

return construct(grid, 0, grid.length - 1, 0, grid.length - 1);

}

private Node construct(int[][] grid, int top, int bottom, int left, int right) {

for (int i = top; i <= bottom; i++) {

for (int j = left; j <= right; j++) {

if (grid[i][j] != grid[top][left]) {

Node node = new Node(false, false);

int mid1 = top + ((bottom - top) >> 1), mid2 = left + ((right - left) >> 1);

node.topLeft = construct(grid, top, mid1, left, mid2);

node.topRight = construct(grid, top, mid1, mid2 + 1, right);

node.bottomLeft = construct(grid, mid1 + 1, bottom, left, mid2);

node.bottomRight = construct(grid, mid1 + 1, bottom, mid2 + 1, right);

return node;

}

}

}

return new Node(grid[top][left] == 1, true);

}

}

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

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

相关文章

漫画:什么是二分查找?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 蠢萌的小灰来源 | 程序员小灰————— 第二天 —————什么意思呢&#xff1f;我们来举两个栗子&#xff1a;给定一个有序数组 2&#xff0c;5&#xff0c;7&#xff0c;9&#xff0c;12&#xff0c;14&#xff0c;20&…

mysql和mysqldump出现command not found 问题解决

mysql和mysqldump出现command not found 问题解决 一、给mysql配置环境变量 #找到mysql安装路径 cd /app/mysql-5.7.25 #vim /etc/profile export MYSQL_HOME/app/mysql-5.7.25 :${MYSQL_HOME}/bin二、建立软连接 1、查找mysql安装路径 find / -name mysql 通常mysql安装路径…

如何给老婆解释什么是微服务?(文末有福利)

戳蓝字“CSDN云计算”关注我们哦&#xff01;程序员有了老婆之后就是累&#xff0c;上次好不容易给她解释了什么是Restful&#xff0c;这不&#xff0c;麻烦又来了…一个周日的清晨&#xff0c;阳光洒在我的脸上&#xff0c;慢慢把我唤醒。我翻过身&#xff0c;感觉好像少了些什…

oracle19c连接MySQL_oracle19c的安装和使用navicat连接oracle数据库

一&#xff0c;数据的安装Oracle官方下载链接&#xff1a;https://www.oracle.com/downloads/#category-database首先去oracle官网下载&#xff0c;数据库里面包含了客户端&#xff0c;所以不需要再下载客户端了注意&#xff1a;有的人不下载数据库&#xff0c;只下载客户端为了…

Mycat_MySql更新数据库失败 --read-only

接上一篇&#xff1a;企业实战_20_Mycat-Web之UI监控 https://blog.csdn.net/weixin_40816738/article/details/100100053 #登录数据库 mysql -uroot -p #使用指定数据库 use 数据库名 #查看数据库处于什么状态下 show variables like read-only; #关闭read-only属性状态 set g…

Linux 运维必备的 13 款实用工具,拿好了

戳蓝字“CSDN云计算”关注我们哦&#xff01;来源 | 高效运维本文介绍几款 Linux 运维比较实用的工具&#xff0c;希望对 Linux 运维人员有所帮助。1. 查看进程占用带宽情况 - NethogsNethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。下载&#xff1…

企业实战_12_MyCat水平扩展_分库分表

接上一篇&#xff1a;企业实战_11_MyCat垂直拆分相关配置 https://gblfy.blog.csdn.net/article/details/100055838 文章目录一、概念理论理解1. 垂直拆分理解2. 水平扩展理解3. 水平扩展案例4. 水平扩展场景5. 水平拆分原则6. 水平扩展架构图二、关键问题解决方案2.1. 分片后如…

面试阿里,我还是挂在了第四轮……

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 倪升武责编 | 郭 芮可能每个技术人都有个阿里梦&#xff0c;我也不例外。最近准备跳槽&#xff0c;前一阵子在准备各种面试&#xff0c;也面了几个大厂&#xff0c;包括阿里。是的&#xff0c;最后我挂在了第四轮。这篇文章…

Mycat+Mysql 插入数据报错 i[Err] 1064 - partition table, insert must provide ColumnList

逻辑库结构和物理库表结构如下(逻辑库结构物理库表结构)&#xff1a; CREATE TABLE order_key (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键,goods_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 商品名称,place varchar(2…

微服务精华问答 | 如何理解中台战略和微服务

戳蓝字“CSDN云计算”关注我们哦&#xff01;微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。今天&#xff0c;就让我们来看看关于微服务更加有深度的问题吧。1Q&#xff1a;什么是微服务A&#xff1a;1&#xff09;一组小的服务&a…

php 对象转换成数组,PHP把对象转换为数组的问题

原始对象object(Qiniu\Http\Error)#24 (2) {["url":"Qiniu\Http\Error":private]>string(25) "http://rs.qbox.me/buckets"["response":"Qiniu\Http\Error":private]>object(Qiniu\Http\Response)#25 (6) {["sta…

华为内测基于Android 10.0的EMUI 10系统;2019年Q1真无线耳机市场份额,苹果占半壁江山……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 苹果获得悬停手势专利 可隔空…

企业实战_17_MyCat水平扩展_跨分片查询_ER分片

接上一篇&#xff1a;企业实战_16_MyCat全局自增ID https://blog.csdn.net/weixin_40816738/article/details/100064315 案例比较&#xff1a; 在垂直拆分场景中&#xff0c;针对字段个数少的类型为字典类型的表&#xff0c;我们可以使用全局表的方式解决。 在水平扩展场景中&a…

bmob php支付,支付服务 - 支付服务RESTful 开发文档 - 《Bmob 文档中心》 - 书栈网 · BookStack...

注意&#xff1a;目前支付宝无法使用&#xff0c;请用户暂时不要接入&#xff0c;等待官方的恢复公告&#xff01;打款需知1.打款前请先在控制台填写以下信息2.每月的1、2、16、17号为申请打款时间&#xff0c;15号、月尾日为打款时间&#xff0c;确保用户有半个月的追诉期。Bm…

企业实战_22_MyCatSQL拦截

接上一篇&#xff1a;企业实战_21_MyCat_keepalived 安装配置验证 https://gblfy.blog.csdn.net/article/details/100073474 Mycat SQL拦截应用场景&#xff0c;可以指定监控的sql类型 文章目录1. 在server.xml文件中添加sql拦截属性标签2. 测试验证3. 查看sql拦截监控日志1. 在…

MongoDB凭什么跻身数据库排行前五?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 孙浩峰DB-Engines 数据库流行度排行榜发布了5 月份的数据&#xff0c;前六名的排名“千年不变”&#xff0c;分别是&#xff1a;Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB 和IBM Db2。而其中&#xff0c;Mo…

企业实战_23_MyCat SQL防火墙

接上一篇&#xff1a;企业实战_22_MyCatSQL拦截 https://blog.csdn.net/weixin_40816738/article/details/100073474 文章目录1. SQL防火墙_白名单配置2. 白名单测试3. SQL防火墙_黑名单配置4. SQL防火墙_黑名单测试SQL防火墙&#xff1a;包括2个标签<whitehost></whi…

同样是消息队列,Kafka凭什么速度那么快?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 邴越来源 | 技术琐话Kafka的消息是保存或缓存在磁盘上的&#xff0c;一般认为在磁盘上读写数据是会降低性能的&#xff0c;因为寻址会比较消耗时间&#xff0c;但是实际上&#xff0c;Kafka的特性之一就是高吞吐率。即使是普…

企业实战_10_Mycat集成ZK实现配置同步

主机名IP地址角色数据库mycat192.168.43.32MYCAT ,MYSQL,ZKmycat&#xff08;全局自增id&#xff09;node1192.168.43.104ZKMYSQLorder_db01和order_db01node2192.168.43.217ZK,MYSQLorder_db03和order_db04node3192.168.43.172MYCAT ,MYSQLmycat&#xff08;全局自增id&#x…

亚马逊重组游戏开发部门:数个未发布游戏被“扼杀”;台积电明年开始为苹果iPhone生产5nm处理器……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 盒马送餐机器人、无人化再进…