gpt4 book ai didi

java - 打印具有 4 个节点的树(简单森林)以检查基准

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:59 26 4
gpt4 key购买 nike

我实现了一种实验性 OOP 语言,现在使用 Storage benchmark 对垃圾收集进行基准测试.现在我想检查/打印以下小深度基准(n=2、3、4、..)。

树(有 4 个子节点的森林)由 buildTreeDepth 方法生成。代码如下:

import java.util.Arrays;

public final class StorageSimple {

private int count;
private int seed = 74755;

public int randomNext() {
seed = ((seed * 1309) + 13849) & 65535;
return seed;
}

private Object buildTreeDepth(final int depth) {
count++;
if (depth == 1) {
return new Object[randomNext() % 10 + 1];
} else {
Object[] arr = new Object[4];
Arrays.setAll(arr, v -> buildTreeDepth(depth - 1));
return arr;
}
}

public Object benchmark() {
count = 0;
buildTreeDepth(7);
return count;
}

public boolean verifyResult(final Object result) {
return 5461 == (int) result;
}


public static void main(String[] args) {
StorageSimple store = new StorageSimple();
System.out.println("Result: " + store.verifyResult(store.benchmark()));
}
}

是否有某种简单/直接的方法来打印由 buildTreeDepth 生成的树?就是n=3,4,5的短树。

最佳答案

正如其他人已经建议的那样,您可以选择一些库来这样做。但如果你只是想在命令行中测试一个简单的算法,你可以执行以下操作,我在命令行中打印树时经常使用它(按句柄编写,可能会有一些错误。相信你可以得到这个 BFS算法有效):

queue.add(root);
queue.add(empty);
int count = 1;
while (queue.size() != 1) {
Node poll = queue.poll();
if (poll == empty) {
count = 1;
queue.add(empty);
}
for (Node n : poll.getChildNodes()) {
n.setNodeName(poll.getNodeName(), count++);
queue.add(n);
}
System.out.println(poll.getNodeName());
}

示例输出:

1
1-1 1-2 1-3 1-4
1-1-1 1-1-2 1-1-3 1-2-1 1-2-2 1-3-1 1-3-2 1-4-1
...

在您的情况下,您使用数组,这似乎更容易打印。

关于java - 打印具有 4 个节点的树(简单森林)以检查基准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43465535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com