Java сборка Quadtree of 2D Array - PullRequest
       34

Java сборка Quadtree of 2D Array

1 голос
/ 16 января 2020

Я хочу узнать о Quadtrees, однако я не могу понять, как вставить узлы. Например, у меня есть двумерный массив пикселей int[][] square (длина 2 ^ n) и я хочу сохранить значения в Quadtree. Листья должны содержать значения квадратного массива.

class QuadTreeNode{

    public QuadTreeNode topLeft, topRight, bottomLeft, bottomRight;
    private int leaf;
    private int nodeLevel;    //level(position) of the node in the tree (2^0 or 2^1 or 2^2, ...)
    private int[][] square;
    private QuadTreeNode parent;


    public QuadTreeNode(int nodeLevel, QuadTreeNode parent){
        this.nodeLevel = nodeLevel
        this.parent = parent;
    }

    //constructor for the leaves (with squareValue)
    public QuadTreeNode(int nodeLevel, int leaf, QuadTreeNode parent){
        this.nodeLevel = nodeLevel
        this.leaf = leaf;
        this.parent = parent;
    }

    public QuadTreeNode arrayToQuadTree(int[][] square){
        QuadTreeNode root = new QuadTreeNode(square.length) 
        root.insertNodes(root, square.length, 0, 0);   //x = 0, y = 0, maybe for the start?
    }

    //please Help!
    public QuadTreeNode insertNodes(QuadTreeNode parent, nodeLevel, int x, int y){
        if(nodeLevel == 1)
           return new QuadTreeNode(1, square[x][y], parent);

        //this is the part, were I don't know how to implement it.
        QuadTreeNode node = new QuadTreeNode(nodeLevel/2, parent);
        parent.topLeft = insertNodes(...);
        parent.topRight = insertNodes(...);
        parent.bottomLeft = insertNodes(...);
        parent.bottomRight = insertNodes(...);

        return node;
    }
}

Заранее спасибо!

...