Bla*_*ake 1 c++ io 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;
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些方法来使它正确,但我无法弄明白.
任何帮助都会很棒.
谢谢.
一种简单的方法是在数据之前打印分隔符,如下所示
cout << ", " << p->data;
Run Code Online (Sandbox Code Playgroud)
这样我们就可以将你的问题改成跳过第一个逗号.这更容易.提示:为了跟踪是否跳过逗号,您可能需要为函数引入另一个参数,因为它是一个递归函数.
正如xmoex指出的那样,有一种更优雅的方式来打印这棵树,从而产生非常易读和逻辑的代码.尝试找到这种方式来获得额外的挑战.
一个不相关的提示:你可以删除return语句,因为它是多余的 - 函数将会返回!像这样:
void BinaryTree::inorder(tree_node* p)
{
if (p != NULL)
{
// stuff goes inside here!
}
// no return here - the function will return anyway
}
Run Code Online (Sandbox Code Playgroud)
这将产生较少的不必要的代码,并将帮助您阅读自己的代码,如果您需要,例如,在分配截止日期之前快速调试它.