public Node intersect(Node quadTree1, Node quadTree2) {
//当其中至少1个为叶子时
if (quadTree1.isLeaf) {
if (quadTree1.val) //当一棵树为1叶子,该节点必为1叶子
return new Node(true, true);
else//若为0叶子,该节点与另一棵树节点相同
return new Node(quadTree2.val, quadTree2.isLeaf,
quadTree2.topLeft, quadTree2.topRight, quadTree2.bottomLeft, quadTree2.bottomRight);
}
if (quadTree2.isLeaf) {
return intersect(quadTree2, quadTree1);//反转顺序
}
//两棵树的节点都不是叶子
Node o1 = intersect(quadTree1.topLeft, quadTree2.topLeft);
Node o2 = intersect(quadTree1.topRight, quadTree2.topRight);
Node o3 = intersect(quadTree1.bottomLeft, quadTree2.bottomLeft);
Node o4 = intersect(quadTree1.bottomRight, quadTree2.bottomRight);
//当子节点都为叶子且值相同,该节点为叶子
if (o1.isLeaf && o2.isLeaf && o3.isLeaf && o4.isLeaf &&
o1.val == o2.val && o1.val == o3.val && o1.val == o4.val) {
return new Node(o1.val, true);
}else//否则该节点不为叶子
return new Node(false, false, o1, o2, o3, o4);
}
2022.7.15-----leetcode.558
最新推荐文章于 2024-06-21 17:14:10 发布