arrays - 使用C中的数组打印二维二叉树
问题描述
我正在尝试使用一维数组实现二叉树。我知道父节点的左节点将是 2n+1,而右节点将是 2n+2,其中 n 是父节点的索引。但是,我无法理解如何使用此信息以 2D 形式打印二叉树。本质上,我想像这样打印它:
4
2
5
1
6
3
7
任何帮助表示赞赏!
解决方案
类似于(伪代码)的东西
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);
}
}
推荐阅读
- c++ - 如何在编译时从 string_view 中删除子字符串?
- compilation - 在 Julia 中需要类型声明
- powershell - 使用 csv 文件中的新名称重命名目录中的文件
- php - PHP:保存上次请求的 cookie 并在 GET 请求中使用它
- javascript - 有没有人有使用 @material-ui/pickers Calendar API 的经验?
- python - 相同的鼠标移动以不同的方式评估
- python - 在 Jupyter 中使用自定义 ContentsManager 创建新文件
- python - Python ASK 信号图
- artifactory - 无法使用 JFrog CLI 将文件上传到 Artifactory
- javascript - 在执行下一行代码之前等待几秒钟?