gpt4 book ai didi

级别顺序树打印中的 Java 缩进,而不是二叉树

转载 作者:行者123 更新时间:2023-12-02 13:16:17 24 4
gpt4 key购买 nike

我想用层序遍历打印我的非二叉树。在下面的代码中,每次添加一组新的子项时我都会缩进,但是当我再次返回树中时,我需要删除缩进。这棵树的打印方式如下:

Root
Home
HomeChild1
HomeChild2
Documents (should be same level as Home)
DocumentChild1
DocumentChild2
Downloads (should be same level as Home and Documents)
DownloadsChild1

代码:

queue.add(o);  //root
int indent = 0;
while(!queue.isEmpty(){

for(int i=0; i<indent; i++){
print(" ");
}

Object tempObj = queue.remove(o);
print(tempObj.value);

if(tempObj.children != null){
//Adding all childrens, since its not a binary tree I loop throught all children
for(int i=0; i<tempObj.children.length; i++){
queue.add(0, tempObj.children[i];
}
indent++;
}
}

这就是我想要的样子

Root
Home
HomeChild1
HomeChild2
Documents
DocumentChild1
DocumentChild2
Downloads
DownloadsChild1

最佳答案

当您开始处理子项时,您需要增加缩进量,然后在到达一组子项的末尾时减少缩进量。

不过,你最好使用递归调用之类的东西来完成这整个事情,而不是队列。队列增加了很多复杂性并且没有帮助。

类似于:

recurseTree(Thing obj, String indent) {
print(indent+obj.value);
if (obj.children != null) {
for (Thing child: obj.children) {
recurseTree(child, indent+" ");
}
}
}

您可以在此处进行一些优化(例如仅进行一次字符串连接),并且您将需要进行一些整理,但这应该为您提供所需的基本框架。

使用启动它

recurseTree(root, "");

关于级别顺序树打印中的 Java 缩进,而不是二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43760493/

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