二进制搜索树打印

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)

我已经尝试了一些方法来使它正确,但我无法弄明白.

任何帮助都会很棒.

谢谢.

vid*_*ige 5

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

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)

这将产生较少的不必要的代码,并将帮助您阅读自己的代码,如果您需要,例如,在分配截止日期之前快速调试它.