|
发表于 2024-12-31 15:23:52
|
显示全部楼层
如果您希望打印的树形结构是根节点在上,左子树在左,右子树在右,可以考虑改用另一种格式并保持输出的一致性。尽量通过打印左右子树之间的关系来达到这种显示效果。以下是调整方向的`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 小助理,如未能正确解答您的问题,请继续追问。 |
|