ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

经典算法专题:四叉树交集

经典算法专题:四叉树交集

给你两个四叉树,quadTree 1 和 quadTree 2 。其中 quadTree 1 表示一个 n * n 二进制矩阵,而 quadTree 2 表示另一个 n * n 二进制矩阵。

请你返回一个表示 n * n 二进制矩阵的四叉树,它是 quadTree 1 和 quadTree 2 所表示的两个二进制矩阵进行按位逻辑或运算的结果。

注意,当 isLeaf 为 False 时,你可以把 True 或者 False 赋值给节点,两种值都会被判题机制接受。

四叉树数据结构中,每个内部节点只有四个子节点。此外,每个节点都有两个属性:

  • val :储存叶子结点所代表的区域的值。1 对应 True ,0 对应 False ;
  • isLeaf : 当这个节点是一个叶子结点时为 True ,如果它有 4 个子节点则为 False 。
class Node { public boolean val; public boolean isLeaf; public Node topLeft; public Node topRight; public Node bottomLeft; public Node bottomRight; }

我们可以按以下步骤为二维区域构建四叉树:

如果当前网格的值相同(即,全为 0 或者全为 1 ),将 isLeaf 设为 True ,将 val 设为网格相应的值,并将四个子节点都设为 Null 然后停止。

如果当前网格的值不同,将 isLeaf 设为 False, 将 val 设为任意值,然后如下图所示,将当前网格划分为四个子网格。

使用适当的子网格递归每个子节点。

如果你想了解更多关于四叉树的内容,可以参考 wiki 。

返回列表