在单行上打印inorder树遍历的数据,用空格分隔,以换行符

时间:2017-11-10 02:19:28

标签: c printf binary-search-tree

我正在尝试按顺序打印BST的数据。这适用于简单的递归,但是在函数返回到调用代码之前,我无法弄清楚如何在打印数据的末尾打印换行符。

/* Print data for inorder tree traversal on single line,
 * separated with spaces, ending with newline. */

void printTree(struct TreeNode* root)
{
  if(root)
  {
    printTree(root->left);
    printf("%d ", root->data);
    printTree(root->right);
  }
}

3 个答案:

答案 0 :(得分:2)

在所有递归调用完成后,您可以使用辅助函数打印换行符:

dt %>%
  group_by(AB_NO,LO_NO,L_NU)%>% 
  mutate(ACTV_AMT = sum(ACTV_AMT),
         ST_DATE = min(ST_DATE),
         ND_DATE = max(ND_DATE)) %>%
  ungroup() %>%
  mutate(id = row_number(),
         FEATURE_CODE = paste0("FTR_", FEATURE_CODE),
         ACTV_CODE = paste0("ACTV_", ACTV_CODE),
         count_FEATURE = 1,
         count_ACTV = 1) %>%
  spread(FEATURE_CODE, count_FEATURE) %>%
  spread(ACTV_CODE, count_ACTV) %>%
  select(-id) %>%
  group_by(ST_DATE, ND_DATE, LO_NO, ACTV_AMT, AB_NO, L_NU) %>%
  summarise_all(sum, na.rm=T) %>%
  ungroup()

答案 1 :(得分:0)

最简单的方法是在调用函数后打印换行符。

另一种简单的方法是拥有两个功能。新功能将是您要调用的第一个功能。然后在新函数内部调用您已实现的函数。之后,打印换行符。

类似的东西:

Service

答案 2 :(得分:-1)

您可以编写一个宏,如下所示:

#define PRINT_NEWLINE_AFTER_CALL(x) x,printf("\n")

并像这样使用它:

PRINT_NEWLINE_AFTER_CALL(printTree(root));

如果您的函数返回一个值,使用此宏您也可以接收该返回值。比如说,您的函数printTree()会返回int,然后您可以:

int retval = PRINT_NEWLINE_AFTER_CALL(printTree(root));