四叉树或合并,递归合并就行了,记着值相同的时候要把四个叶子节点合并
public Node intersect(Node quadTree1, Node quadTree2) {
if (quadTree1.isLeaf) return quadTree1.val ? quadTree1 : quadTree2;
if (quadTree2.isLeaf) return quadTree2.val ? quadTree2 : quadTree1;
Node node = new Node(false, false,
intersect(quadTree1.topLeft, quadTree2.topLeft),
intersect(quadTree1.topRight, quadTree2.topRight),
intersect(quadTree1.bottomLeft, quadTree2.bottomLeft),
intersect(quadTree1.bottomRight, quadTree2.bottomRight));
if (node.topLeft.isLeaf
&& node.topRight.isLeaf
&& node.bottomLeft.isLeaf
&& node.bottomRight.isLeaf
&& node.topLeft.val == node.topRight.val
&& node.bottomLeft.val == node.bottomRight.val
&& node.topLeft.val == node.bottomRight.val) {
//四个节点的值相同,合并
Node merge = new Node();
merge.isLeaf = true;
merge.val = node.topLeft.val;
return merge;
}
return node;
}