【发布时间】:2021-09-07 17:25:21
【问题描述】:
我正在尝试使用一维数组实现二叉树。我知道父节点的左节点将是 2n+1,而右节点将是 2n+2,其中 n 是父节点的索引。但是,我无法理解如何使用此信息以 2D 形式打印二叉树。本质上,我想像这样打印它:
4
2
5
1
6
3
7
感谢任何帮助!
【问题讨论】:
标签: arrays c binary-tree
我正在尝试使用一维数组实现二叉树。我知道父节点的左节点将是 2n+1,而右节点将是 2n+2,其中 n 是父节点的索引。但是,我无法理解如何使用此信息以 2D 形式打印二叉树。本质上,我想像这样打印它:
4
2
5
1
6
3
7
感谢任何帮助!
【问题讨论】:
标签: arrays c binary-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);
}
}
【讨论】:
a[nodeIndex] != -1 时,它会检查节点是否为空吗?