首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何打印出三叉树?

如何打印出三叉树?
EN

Stack Overflow用户
提问于 2020-04-14 00:14:40
回答 1查看 338关注 0票数 0

我有以下方法递归地执行三叉树的预序遍历,但在以某种方式打印它时遇到了困难。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public void preOrder(Node node) {
    if (node == null) {
        return;
    }
    System.out.print(" " + node.data);
    preOrder(node.left);
    preOrder(node.middle);
    preOrder(node.right);
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Output: Root LeftChild LeftChildA LeftChildB LeftChildC MiddleChild RightChild
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Desired Output:
Root
  Left
     LeftChildA //Left child of left 
     LeftChildB //Middle child of left
     LeftChildC //Right child of left
  Middle
  Right

我想缩进树的每一层,以便更容易地可视化树的结构。请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-14 00:32:51

添加一个参数,用于标高的缩进程度。如果字符串的字符数与要缩进的字符数完全相同,则可以很好地执行此操作。当你进行递归调用时,缩进得更深。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void preOrder(Node node) {
    String initialIndent = ""; // Root level has no indentation
    preOrderHelper(initialIndent, node);
}

public void preOrderHelper(String indent, Node node) {
    if (node == null) {
        return;
    }
    System.out.println(indent + node.data);

    String newIndent = indent + "   ";
    preOrderHelper(newIndent, node.left);
    preOrderHelper(newIndent, node.middle);
    preOrderHelper(newIndent, node.right);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61198806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文