| 12345678910111213141516171819202122232425262728293031323334353637383940 | /*// Definition for a QuadTree node.class Node {    public boolean val;    public boolean isLeaf;    public Node topLeft;    public Node topRight;    public Node bottomLeft;    public Node bottomRight;    public Node() {}    public Node(boolean _val,boolean _isLeaf,Node _topLeft,Node _topRight,Node _bottomLeft,Node _bottomRight) {        val = _val;        isLeaf = _isLeaf;        topLeft = _topLeft;        topRight = _topRight;        bottomLeft = _bottomLeft;        bottomRight = _bottomRight;    }};*/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);    }}
 |