Я хочу узнать о 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;
}
}
Заранее спасибо!