我正在为学校执行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
}
这样可以减少不必要的代码,并在需要(例如)在作业截止日期之前快速对其进行调试时,可以帮助您阅读自己的代码。