在C中打印二进制树

时间:2018-06-15 22:49:45

标签: c printf binary-tree

如何在c?中显示二叉树? 像这样

         37
      /      \
    16        3
   /  \       / \
  9   26    58  81
        \   / \
        35 55  74

我可以逐级显示

1 23 4567 89

但是我需要以正确的格式绘制这个BT

void printLevel(NoArvore * node , int level)
{
  if(node != NULL && level == 0)
  {
  printf("%d",node->number);
  printf("====");
  }
  else if(node != NULL){

    printLevel(node->left,level-1);
    printLevel(node->right,level-1);
  }
}

void printElements(NoArvore *node)
{
  int i,spaces;
  int levelCount = getHeight(node);
  int Hspace =  getHeight(node);

  for(i = 0; i < levelCount;i++)
  {
    for(spaces = 0; spaces <= (Hspace*Hspace)-(i+3);spaces++)
     printf("=");
    printLevel(node,i);
    printf("\n");
  Hspace--;
  }
}

使用此代码,我有此输出

==============37====
======16====76====
9====26====58====81====
35====55====74====

1 个答案:

答案 0 :(得分:0)

@Stephan Schlecht 有可能使这个功能更通用吗?如果在其他树中使用,我有这个输出

:->