私は学校でデータ構造について学び始めました。二分探索木を実装し、データ構造が占めるメモリを教えなければならない宿題があります。
BST を作成しましたが、すべてが期待どおりに機能していると思いますが、使用されるメモリを計算する方法がわかりません。
これは、データ構造用に作成したコードと挿入用のコードです。
class Node {
int key, totalValue;
public Node left;
public Node right;
public Node (int key, int totalValue) {
this.key= key;
this.totalValue = totalValue;
this.left = null;
this.right = null;
}
public int getkey() {
return key;
}
public int getTotalValue() {
return totalValue;
}
}
class Tree {
private Node root;
public Tree() {
this.root = null;
}
public Node getRoot() {
return this.root;
}
public void setRoot(Node node) {
this.root = node;
}
}
そして、これは挿入するためのコードです:
private static void addNode(Node node, Node tempNode) {
if (tempNode.getkey() < node.getkey()) {
if (node.left == null) {
node.left = tempNode;
} else {
addNode(node.left, tempNode);
}
} else if (tempNode.getkey() > node.getkey()){
if (node.right == null) {
node.right = tempNode;
} else {
addNode(node.right, tempNode);
}
}else{
node.totalValue += tempNode.getTotalValue();
}
}
ノードごとに 2 int に 8 バイトが必要であることはわかっていますが、各ポインターがどれだけ占有するかはわかりません。
2 番目の質問です。10000 個のキーから 25000 個のエントリを挿入するとします。新しいノードが「位置」を見つけるまで、各挿入は再帰的に使用されます。占有されているメモリを計算するにはどうすればよいですか?