12345678910111213141516171819202122232425262728293031323334353637383940 |
- class Solution {
- public Node construct(int[][] grid) {
- return construct(grid, 0, 0, grid.length);
- }
- private Node construct(int[][] grid, int x, int y, int n) {
- if (n == 1)
- return new Node(grid[y][x] == 1, true, null, null, null, null);
- n /= 2;
- Node tl = construct(grid, x, y, n);
- Node tr = construct(grid, x + n, y, n);
- Node bl = construct(grid, x, y + n, n);
- Node br = construct(grid, x + n, y + n, n);
- if (tl.isLeaf && tr.isLeaf && bl.isLeaf && br.isLeaf && tl.val == tr.val && tr.val == bl.val && bl.val == br.val)
- return new Node(tl.val, true, null, null, null, null);
- return new Node(true, false, tl, tr, bl, br);
- }
- }
|