LeetCode 427. 建立四叉树
427. 建立四叉树
LeetCode 题解持续更新中GitHub仓库地址 CSDN博客地址
今天的题目一看,有点吓人,上来就给弄了个四叉树。但是实际仔细看一下题目和样例,就会发现,其实还好,就是 递归 的改编版。
我们需要做的就是判断一个范围之中的值是否都相等,如果不相等,就将当前范围划分为 四份,得到了新的范围,然后通过这四个范围,继续进行递归探寻。
class Solution {public:Node *construct(vector<vector<int>> &grid) {return dfs(0, 0, grid.size(), grid.size(), grid);}// 创建递归函数Node *dfs(int r1, int c1, int r2, int c2, vector<vector<int>> &g) {// 创建变量 tag 判断 从 点(r1,c1) 到 点(r2,c2) 中是否所有的数字都是一样的bool tag = true;// 遍历 点(r1,c1) 到 点(r2,c2)这个范围之中的元素for (int i = r1; i < r2; i++) {for (int j = c1; j < c2; j++)// 如果发现了不相等if (g[r1][c1] != g[i][j]) {// 将 tag 置反tag = false;// 并且退出遍历break;}// 继续退出遍历if (!tag) break;}// 根据题意,如果范围内的数字均相同( tag 为 true),val 的值与 范围内的值相同,这里需要注意一下, val 是布尔类型// 并且将 isLeaf 置为 Trueif (tag) return new Node(g[r1][c1] == 1, true);// 如果不满足要求,就将 val 随意置为一个值,将 isLeaf 置为 false,四个节点分别置为新的四叉树节点。return new Node(true, false, dfs(r1, c1, (r1 + r2) / 2, (c1 + c2) / 2, g), dfs(r1, (c1 + c2) / 2, (r1 + r2) / 2, c2, g), dfs((r1 + r2) / 2, c1, r2, (c1 + c2) / 2, g), dfs((r1 + r2) / 2, (c1 + c2) / 2, r2, c2, g));}
};
public class Solution {public Node construct(int[][] grid) {return dfs(0, 0, grid.length, grid.length, grid);}// 创建递归函数Node dfs(int r1, int c1, int r2, int c2, int[][] g) {// 创建变量 tag 判断 从 点(r1,c1) 到 点(r2,c2) 中是否所有的数字都是一样的boolean tag = true;// 遍历 点(r1,c1) 到 点(r2,c2)这个范围之中的元素for (int i = r1; i < r2; i++) {for (int j = c1; j < c2; j++)// 如果发现了不相等if (g[r1][c1] != g[i][j]) {// 将 tag 置反tag = false;// 并且退出遍历break;}// 继续退出遍历if (!tag) break;}// 根据题意,如果范围内的数字均相同( tag 为 true),val 的值与 范围内的值相同,这里需要注意一下, val 是布尔类型// 并且将 isLeaf 置为 Trueif (tag) return new Node(g[r1][c1] == 1, true);// 如果不满足要求,就将 val 随意置为一个值,将 isLeaf 置为 false,四个节点分别置为新的四叉树节点。return new Node(true, false, dfs(r1, c1, (r1 + r2) / 2, (c1 + c2) / 2, g), dfs(r1, (c1 + c2) / 2, (r1 + r2) / 2, c2, g), dfs((r1 + r2) / 2, c1, r2, (c1 + c2) / 2, g), dfs((r1 + r2) / 2, (c1 + c2) / 2, r2, c2, g));}
}
LeetCode 427. 建立四叉树相关推荐
- Java实现 LeetCode 427 建立四叉树
427. 建立四叉树 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络.网络中每一格的值只会是真或假.树的根结点代表整个网络.对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相 ...
- LeetCode——427. 建立四叉树
427. 建立四叉树 题目描述 答案 方法一:递归 思路与算法 代码 方法二:递归 + 二维前缀和优化 思路与算法 代码 复杂度分析 题目描述 给你一个 n * n 矩阵 grid ,矩阵由若干 0 ...
- LeetCode 427. 建立四叉树(递归)
1. 题目 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络.网络中每一格的值只会是真或假.树的根结点代表整个网络.对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相同的. 每 ...
- LeetCode 427. 建立四叉树 (递归dfs \ 矩阵)
思路 根据0,1矩阵,构建四叉树,根据题意就是要判断,当前矩阵中的值是否全部相同 若矩阵内值相同,也就是只有0或1,则作为叶子节点,叶子结点的值就是这个矩阵的值 若矩阵内值不相同,也就是有0也有1,则 ...
- LeetCode——427.建立四叉树
通过万岁!!! 题目:就是给你一个n*n的数组,然后我们构建一个四叉树.就是把数组进行4等分,然后四个部分是四叉树的四个分支.只不过在这个过程中有一些规则. 如果这个数组(确切的说是子数组),里面的元 ...
- LeetCode题解:427. 建立四叉树
文章目录 题目 427. 建立四叉树 1.题目描述 2.原题链接 解题报告 1.解题思路 2.解题方法 3.时间复杂度分析 4.代码详解 总结 前缀和实现 题目 427. 建立四叉树 1.题目描述 ...
- LeetCode 练习——427.建立四叉树
文章目录 1.题目描述 2.思路 2.1 代码 2.2 测试结果 3.总结 1.题目描述 建立四叉树 给你一个 n * n 矩阵 grid ,矩阵由若干 0 和 1 组成.请你用四叉树表示该矩阵 gr ...
- 力扣(LeetCode)427. 建立四叉树(2023.03.01)
给你一个 n * n 矩阵 grid ,矩阵由若干 0 和 1 组成.请你用四叉树表示该矩阵 grid . 你需要返回能表示矩阵的 四叉树 的根结点. 注意,当 isLeaf 为 False 时,你可 ...
- leetcode 427. Construct Quad Tree | 427. 建立四叉树(分治法)
题目 https://leetcode.com/problems/construct-quad-tree/ 题解 /* // Definition for a QuadTree node. class ...
最新文章
- 推荐一个代码自动完成的工具AutoCode
- ESP32开发板 V1.0.0 Rev1 wifi 蓝牙4MB FLASH MicroPython
- python3 通过 pybind11 使用Eigen加速
- python开源项目homeassistant_树莓派安装家庭助理,Homeassistant,HASS
- Android 路由实践(二)
- mysql为什么选错索引?怎么解决?
- 毕业设计10-22星期日
- springboot~读取自定义配置项
- SpringMVC的RESTful(一)
- html字体中英文设置,用 CSS3 指定网页的中英文分别使用不同字体
- centos7的scp命令_Linux scp命令
- 【新手入门】自己动手搭建云服务器
- 佳能2900打印机与win10不兼容_Win10系统如何解决佳能打印机打印问题?
- java 爬虫抢票_抢票爬虫 - nkandkn - 博客园
- 如何使用 Alink 进行中文情感分析?
- CSP201912-3化学方程式
- 曲面积分的投影法_第二型曲面积分的投影法与对称性
- Error in nextTick TypeError Cannot read property 'children' of undefined 解决
- 监控电脑屏幕python
- android 六棱形分析图,[转载]菱形整理形态、三角形整理形态图解及分析
热门文章
- 每天干的啥?(2019.6)
- win10 下 caffe 的第一个测试程序(附带详细讲解)
- Spring Boot Post接口数据加解密
- 【javaWeb微服务架构项目——乐优商城day05】——商品规格参数管理(增、删、改,查已完成),SPU和SKU数据结构,商品查询
- 毕业设计 Stm32人体心率血氧无线监测系统 - 单片机 物联网
- 软件测试二分查找函数,二分查找
- Windows 10如何进入和退出安全模式
- 街道大动土,断网一周,学习计划照旧
- 百度地图api实现的定位,导航,附近搜索
- 利用多组学整合鉴定人类疾病共享的和疾病特异性的宿主基因-微生物组关联