我正在为学校执行Binary Tree程序,并且一切正常。我现在正在做的只是适当的输出。我的老师希望输出的结果是所有数字,其后跟逗号。

我的代码完美地将数字排序并打印出来,但我不确定如何删除最后一个数字后的逗号。

电流输出: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
}

这样可以减少不必要的代码,并在需要(例如)在作业截止日期之前快速对其进行调试时,可以帮助您阅读自己的代码。

10-07 18:55
查看更多