首页 > 解决方案 > 使用C中的数组打印二维二叉树

问题描述

我正在尝试使用一维数组实现二叉树。我知道父节点的左节点将是 2n+1,而右节点将是 2n+2,其中 n 是父节点的索引。但是,我无法理解如何使用此信息以 2D 形式打印二叉树。本质上,我想像这样打印它:

      4
  2
      5
1
      6
  3
      7

任何帮助表示赞赏!

标签: arrayscbinary-tree

解决方案


类似于(伪代码)的东西

PrintNode(0, 0);

接着

void PrintNode(int nodeIndex, int level)
{
  if (a[nodeIndex] != -1)
  {
      PrintNode(nodeIndex*2+1, level + 1);

      PrintSpaces(level * 4);
      PrintValue(a[nodeIndex]);
      NewLine();

      PrintNode(nodeIndex*2+2, level + 1);
  }
}

推荐阅读