You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二叉树打印首行意外缩进问题排查及修正需求

解决二叉树打印首行缩进问题

你当前的代码中,虽意图让根节点无缩进输出,但实际运行时首行仍出现缩进。以下是两种直接有效的修复方案:

方案1:拆分打印逻辑(区分无缩进/树形缩进)

新增一个无缩进打印的辅助方法,满足首次全无缩进、完成版树形缩进的需求:

public void printTree() {
    UI.clearText();
    // 首次打印:所有节点无缩进
    printTreeNoIndent(theTree);
    UI.println();
    UI.println("Completion version:");
    // 完成版:树形层级缩进
    printTreeHelper(theTree, "");
}

// 无递归缩进打印所有节点
private void printTreeNoIndent(DTNode node) {
    if (node != null) {
        UI.println(node.getText());
        printTreeNoIndent(node.getYes());
        printTreeNoIndent(node.getNo());
    }
}

// 树形缩进打印方法
private void printTreeHelper(DTNode node, String indentation) {
    if (node != null) {
        if (indentation.isEmpty()) {
            // 根节点直接输出,无前缀
            UI.println(node.getText());
        } else {
            // 子节点添加缩进和分隔空格
            UI.println(indentation + " " + node.getText());
        }
        // 子节点缩进层级增加两个空格
        printTreeHelper(node.getYes(), indentation + "  ");
        printTreeHelper(node.getNo(), indentation + "  ");
    }
}

方案2:优化原有辅助方法的条件判断

如果不想新增方法,直接修改原有printTreeHelper的文本拼接逻辑,确保根节点无任何前缀:

public void printTree() {
    UI.clearText();
    printTreeHelper(theTree, "");
    UI.println();
    UI.println("Completion version:");
    printTreeHelper(theTree, "");
}

private void printTreeHelper(DTNode node, String indentation) {
    if (node != null) {
        String nodeText = indentation.isEmpty() 
            ? node.getText() 
            : indentation + " " + node.getText();
        UI.println(nodeText);
        printTreeHelper(node.getYes(), indentation + "  ");
        printTreeHelper(node.getNo(), indentation + "  ");
    }
}

两种方案都能实现:首次打印首行无缩进,完成版按树形层级展示缩进效果。

内容的提问来源于stack exchange,提问作者Zynbad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:01:24