gpt4 book ai didi

c++ - 二进制搜索树打印

转载 作者:行者123 更新时间:2023-11-30 00:39:40 25 4
gpt4 key购买 nike

我正在为学校开发二叉树程序,并且一切正常。我现在所做的只是正确的输出。我的老师希望输出的所有数字都按排序顺序排列,并在数字后加上逗号。

我的代码对数字进行了完美排序并打印出来,我只是不确定如何删除最后一个数字后的逗号。

当前输出:1、2、3、4,

必须是:1、2、3、4

这是我的代码:

void BinaryTree::inorder(tree_node* p)
{
if(p != NULL)
{
if(p->left)
inorder(p->left);

cout << p->data << ", ";

if(p->right)
inorder(p->right);
}
else
return;
}

我已经尝试了一些方法来使它正确,但我就是想不通。

任何帮助都会很棒。

谢谢。

最佳答案

一种简单的方法是在数据之前打印分隔符,如下所示

cout << ", " << p->data;

通过这种方式,我们已将您的问题更改为跳过打印第一个 逗号。这要容易得多。提示:为了跟踪是否跳过逗号,您可能需要向该函数引入另一个参数,因为它是一个递归函数。

正如 xmoex 指出的那样,有一种更优雅的方式来打印这棵树,从而生成非常易读且逻辑清晰的代码。尝试找到这种方式来迎接额外的挑战。

一个不相关的提示:您可以删除 return 语句,因为它是多余的 - 该函数无论如何都会返回!像这样:

void BinaryTree::inorder(tree_node* p)
{
if (p != NULL)
{
// stuff goes inside here!
}
// no return here - the function will return anyway
}

这将减少不必要的代码,并在您需要时帮助您阅读自己的代码,例如,在作业截止日期之前快速调试它。

关于c++ - 二进制搜索树打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191468/

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