gpt4 book ai didi

java - 显示伸展树(Splay Tree)的方法

转载 作者:行者123 更新时间:2023-11-30 04:38:36 25 4
gpt4 key购买 nike

我已经构建了一个八字树,我正在尝试按顺序反向打印它,以便当您向左转头时,您可以以正常方式看到这棵树。我编写了以下代码,它输出的树有些正确,但它在最右边的节点上添加了额外的空格,并且没有为应放置在根节点下方的所有子节点添加空格:

   public void printReverseInOrder() {
if (root != null) {
reverseInOrder(root, 0);
}
else {
System.out.println();
}
}

public void reverseInOrder(BSTnode h, int indent) {
if (h != null) {
for (int i = 0; i < indent; i++) {
System.out.print(" ");
}

indent++;
reverseInOrder(h.right, indent);


reverseInOrder(h.left, indent);

System.out.println(h.data);
indent--;
}

}

我觉得这可能是我的递归或缩进加法和减法的放置错误。

最佳答案

这工作得很好,重新排序了一些东西......

public class test {

public static void main(String[] args){
node rootNode = new node(5);
rootNode.r = new node(4);
rootNode.l = new node(3);
rootNode.r.r = new node(2);
rootNode.r.l = new node(1);
rootNode.l.r = new node(6);
rootNode.l.l = new node(7);

reverseInOrder(rootNode, 0);
}

public static void reverseInOrder(node h, int indent) {
if (h != null) {
indent++;
reverseInOrder(h.r, indent);

for (int i = 0; i < indent; i++) {
System.out.print(" ");
}
System.out.println(h.value);

reverseInOrder(h.l, indent);
}
}
}

调用结束时的 indent-- 并没有真正执行任何操作,因为函数结束并跳转回来。此外,随着缩进的增加,示例代码中的间距实际上呈指数级增长(因为它每次输入时都会打印空格,因此 1 空格 + 2 空格 + 3 空格),我只是将其更改为仅在打印值本身之前添加空格(所以它总是等于缩进本身而不是缩进阶乘)。

输出如下:

      2
4
1
5
6
3
7

关于java - 显示伸展树(Splay Tree)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12827646/

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