如果您希望打印的树形结构是根节点在上,左子树在左,右子树在右,可以考虑改用另一种格式并保持输出的一致性。尽量通过打印左右子树之间的关系来达到这种显示效果。以下是调整方向的`printTree`函数:
// 打印二叉树(标准格式)
void printTree(TreeNode* node, int level) {
if (node == NULL) {
for (int i = 0; i < level; ++i) {
printf(" "); // 打印缩进
}
printf("null\n");
return;
}
// 打印适当的缩进
for (int i = 0; i < level; ++i) {
printf(" ");
}
// 打印当前节点值
printf("%d\n", node->val);
// 先打印左子树
printTree(node->left, level + 1);
// 再打印右子树
printTree(node->right, level + 1);
}
在这种格式中,每一层节点在打印时都会先打印出当前节点,然后递归打印其左子树,再打印右子树。这样你会得到一棵标准的树形输出。调整空格可以更好地体现层级关系。
此外,请确保控制台配置足够宽,以适当的字体和窗口大小来查看树结构。由于每行都会分配额外空格以表示层级,所以整棵树可能会变宽。
可以尝试执行代码查看效果,看是否符合要求。如果输出方式仍无法满足需求,可以考虑用图形编程库或者更复杂的格式化输出形成图形化表示。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |