我已经在学校开始学习数据结构,并且我有一个作业,我必须实现一个二叉搜索树并告诉数据结构占用的内存。
我已经创建了我的 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 个字节,但我不知道每个指针占用多少。
第二个问题。想象一下,我从 10000 个键中插入 25000 个条目。每个插入都将递归使用,直到新节点找到它的“位置”。如何计算占用的内存?